链接到系统C库msvcrt.dll

时间:2012-10-16 09:58:11

标签: c++ c windows msvcrt

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

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

我认为可行的方法是显式指定/ NODEFAULTLIB,并使用dll导入过程导入msvcrt.dll函数。

任何人都有线索?

2 个答案:

答案 0 :(得分:2)

您可以使用MinGW-w64 GCC,它与msvcrt.dll完全相同。

您可以找到下载here。如果您不想重新分发任何DLL,可以将程序与-static-libgcc -static-libstdc++链接。

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

答案 1 :(得分:2)

您不想使用msvcrt.dll。

  • 它很老,因此不符合现代C运行时库规范。
  • 它的存在主要是为了向后兼容,并由具有特殊要求的certain system components使用。
  • 如果发现安全问题,您不能指望它会被广泛修补。
  • 无法保证使用现代编译器创建的二进制文件与msvcrt.dll中的ABI兼容。
  • 现代C和C ++编译器在优化,设置和拆卸方面对其运行时库有着深入的了解和期望,因此不应混用和匹配它们。

使用编译器附带的运行时库。如果您不想担心重新分发它,可以静态链接到它,或者您可以阅读有关使用您的应用程序重新分发它的正确方法。