windows - MinGW/MinGW64 链接和依赖于 `msvcrt.dll`

标签 windows linker mingw mingw-w64 msvcrt

我在 MinGW 中为 WinAPI 编码

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

有人说这样的程序需要msvcrt.dll

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

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

最佳答案

  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 问题的简明描述是 here .

关于windows - MinGW/MinGW64 链接和依赖于 `msvcrt.dll`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28783079/

相关文章:

c++ - 如何在 Windows 上使用 Visual C++ 强制加载链接库

c++ - 带 Eclipse CDT + MinGW + GLEW + GLFW 的 OpenGL : Undefined References

生成文件错误 "*** No target specified and no makefile found.stop."

c++ - 带有 SetDefault() 的 wxButton 不再响应框架上的输入

windows - 从excel中删除大量行

用于复制最大文件和按模式的 Windows 批处理脚本

c - 链接多个 C 源文件

node.js - 使用适用于 Windows 的 NVM 更新 node.js

c - 使用另一个目录中另一个 C 文件中的函数?

c - 为什么我的 C 程序可以在 "git bash"运行,但不能在 "cmd"运行?