使用 /NODEFAULTLIB 编译

compiling with /NODEFAULTLIB

本文关键字:编译 NODEFAULTLIB 使用      更新时间:2023-10-16

测试我在Windows XP SP2的全新安装上使用VC10/MT编译的程序时,会出现此错误:"此应用程序无法启动,因为找不到MSVCRXXX.dll。重新安装应用程序可能会解决问题。除了显然将dll与我的程序一起交付之外,我如何使我的程序与此版本的Windows兼容(我真的不想这样做)。我知道问题是这个特定的操作系统版本没有附带MSVCR100.dll但使用/MT 编译不应该解决这个问题吗?它不适用于Windows 7。为什么编译器忽略我的/MT 标志?!

您应该将相关信息编辑到帖子中,而不是在评论中。

为什么编译器忽略我的/MT 标志?!

因为您告诉链接器忽略默认库 ( /NODEFAULTLIB ) 并改为链接msvcrt.lib,这是 DLL 版本的 CRT 的导入库。

  • 要么删除/NODEFAULTLIB,删除msvcrt.lib,让编译器/链接器完成这项工作。

  • 或者将msvcrt[d].lib更改为libcmt[d].lib