链接到系统C库msvcrt.dll

Link to the system C library msvcrt.dll

本文关键字:msvcrt dll 系统 链接      更新时间:2023-10-16

在Windows中,有一个默认的C库msvcrt.dll。

是否可以编写仅使用msvcrt.dll功能的简单C程序?这将减轻安装最近的VC运行时的需求。

我认为一种可能的方法是明确指定/nodefaultlib,并使用dll导入过程导入msvcrt.dll functions。

有人有线索吗?

您可以使用mingw-w64 gcc,它链接到 msvcrt.dll的原因是您说的原因。

您可以在这里找到下载。如果您不想重新分配任何DLL,则可以将程序链接到-static-libgcc -static-libstdc++

话虽如此,您只需将msvcr*.dll文件与可执行文件一起运送,无需安装任何内容。

您不想使用msvcrt.dll。

  • 它很旧,因此不符合现代C运行时间库规格。
  • 它主要存在于向后兼容性和具有特殊要求的某些系统组件的使用。
  • 您不能指望如果发现安全问题会被广泛修补。
  • 不能保证用现代编译器制造的二进制文件将与msvcrt.dll中的ABI兼容。
  • 现代C和C 编译器在优化,设置和拆除方面对其运行时库具有深入的知识和期望,因此您不应该混合并匹配它们。

使用编译器随附的运行时库。如果您不想担心将其重新分配,则可以从静态上链接到它,也可以阅读有关将其重新分配给您的应用程序的正确方法。