使用 /NODEFAULTLIB 编译
compiling with /NODEFAULTLIB
测试我在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
。