MinGW / MinGW64 链接和对“msvcrt.dll”的依赖

use*_*913 4 windows linker mingw msvcrt mingw-w64

我正在 MinGW 中为 WinAPI 编码

我还没有完全理解的一件事是 VC 可再发行版,我对它有一大堆问题

有人说,此类计划需要msvcrt.dll

  1. bot c++ 和 c 编译需要相同的库吗?
  2. 这适用于所有目标客户吗?
  3. 我必须重新分发它吗?我可以重新分发它吗?
  4. 我可以轻松摆脱这种外部依赖吗?
  5. 是否有其他编译器允许我不携带这种令人不快的外部依赖项?(我依稀记得听说它有问题 - 我听说它可能不是核心系统库,或者它不能免费使用和重新分发该库)

我发现这里有问题,因为我想生成不依赖的小exe,只调用系统WinAPI,如果我使用一些类似C标准库函数的函数,我更喜欢它经济地和静态地编译,而不是任何第三方依赖项

Yon*_* Wu 5

  1. MSVCRT.DLL主要包含C运行时,而MinGW只能使用C部分。C++ 二进制代码通常不能跨编译器使用。
  2. 这取决于你的“目标”。它可以从 Windows 2000 开始使用。
  3. 不,不。它是 Microsoft 专有代码,每个 Windows 版本的版本都略有不同。
  4. 不。我不知道有成熟的替代 C 运行时 DLL。
  5. 您无需担心依赖性,因为它随处可用。(请注意,这并不是一个很好的运行时,尤其是对于多字节字符。)

Microsoft 编译器可以链接“静态”库,以便生成的可执行文件仅依赖于系统 DLL,如 kernel32.dll、user32.dll 等。MinGW 还不能做到这一点。

编辑:MSVCRT.DLL 问题的简明描述在这里