【发布时间】:2014-08-31 08:19:31
【问题描述】:
几个问题:
理解 MinGW 本质上是获取 gcc 源并将其编译为 Windows 的可执行文件(即 gcc.exe)是否正确?
MinGW wiki 说“另一方面,MinGW 提供由 Win32 API 提供的功能。”。这让我很困惑。默认情况下,Windows 安装是否已经提供了暴露 Win32 API 的 Win32 API 标头,这会使 MinGW 再次提供它变得多余? MinGW 提供的标头是否与 Windows 安装随附的标头不同?
当我有一个由 MinGW gcc 编译的目标文件时,我可以将它链接到 windows 上的 C 运行时库吗?我认为不是因为 MinGW gcc 生成的目标文件可能与 windows 上的 C 运行时库不兼容(比如使用相同的调用约定)。
【问题讨论】:
-
这更像是他们提供了类似 Linux 的 Win32 包装器。因此,标头需要更像 Linux 标头,而实现实际上会调用 Win32 API。
-
(1) 是的。 (2) MinGW仅提供 Win32 API 提供的功能,与 Cygwin 不同,后者在 Windows 之上提供了一个类 Unix 的仿真层。 (3)MinGW支持Windows内置C运行时使用的调用约定,所以可以链接到它;但是请注意,Microsoft 不支持第三方使用内置运行时,因此无法保证它会可靠地工作(尽管实际上它大部分都可以)。
-
问:默认情况下,Windows 安装是否已经提供了 Win32 API 标头。 A: 不会。windows 头文件和库是分开安装的。使用 Windows SDK。或者使用 MSVS ... 或 MinGW 等 Windows 编译器。
-
WRT 3,Windows 上没有标准的“C 运行时库”。 MSVC 运行时与操作系统分开安装!
-
@duskwulf:MinGW 使用“C 运行时库”MSVCRT.DLL,它作为操作系统组件与最新版本的 Windows 一起分发。
标签: c winapi gcc mingw microsoft-runtime-library