为什么msvcrt.dll会自动链接,即使我只使用os api?

smi*_*mit 4 c++ visual-studio

我正在使用vs2010,每当我构建任何Windows应用程序(不使用mfc或标准库-only raw api)时,msvcrt.dll都会链接到它.有很多应用程序在vs上编译但没有这种依赖.

如何从我的应用程序中删除msvcrt.dll依赖项.

Dav*_*nan 7

这是C运行时库,如果没有运行时,则无法构建C++程序.

对于Visual Studio 2010,您实际上会链接msvcr100.dll,因为这是该版本编译器的MSVC运行时.普通的旧msvcrt.dll是MSVC6运行时,现在作为Windows系统组件提供.如果您的可执行文件链接到msvcrt.dll,那么您必须链接到其他东西,而这些东西又链接到msvcrt.dll,因为VS2010中的任何内容都不会依赖于MSVC6运行时.

您可以使用静态链接(/ MT)删除对msvcr100.dll的依赖性,但选择该选项有利有弊.如果使用静态链接,则可以将应用程序作为单个可执行文件分发.如果使用动态链接,则必须在每台目标计算机上安装运行时.使用某些第三方库将强制您使用动态链接,以便可执行文件和第三方库之间共享运行时.

  • 当然,对于C和C++编译器,总会有一些描述的运行时库. (3认同)