从技术POV来看,MinGW的作用是什么让gcc成为可能?

igb*_*tiz 6 c winapi gcc mingw microsoft-runtime-library

几个问题:

  1. 是否正确理解MinGW本质上是采用gcc源并将其编译为windows的可执行文件,即gcc.exe?

  2. MinGW wiki说"MinGW另一方面提供了Win32 API提供的功能." 这让我很困惑.默认情况下,Windows安装是否已提供公开Win32 API的Win32 API标头,这会使MinGW再次提供冗余?MinGW标题是否与Windows安装的标题不同?

  3. 当我有一个由MinGW gcc编译的目标文件时,我可以将它链接到Windows上的C运行时库吗?我想不是因为MinGW gcc生成的目标文件可能与Windows上的C运行时库不兼容(就像使用相同的调用约定).

Dav*_*son 2

  1. “gcc 源”是什么意思?当您说“gcc 源代码”时,您可能指的是“GCC 编译器的源代码”。MinGW 是 GCC 的 Windows 版本,因此它可以获取任何 C 源代码并生成可执行文件,并且它是 GCC,因此它具有该编译器的功能。

  2. 我认为微软提供的头文件(例如windows.h和winusb.h)实际上与GCC不兼容。MinGW 项目包含与 GCC 兼容的头文件,因此您可以像ReadFile从程序中一样调用 Windows 函数。上次我检查时,MinGW 只有一些 Microsoft 头文件;它缺少 winusb.h。

  3. 为什么要链接 Windows 运行时库?我知道跨编译器互操作是可能的,因为我曾经用 Microsoft C 编译器编写了一个 DLL,并从 MinGW (Qt) 程序中调用它。