使用/ NODEFAULTLIB进行编译

时间:2016-07-09 18:32:34

标签: c++ c

在Windows XP SP2的干净安装上测试我用VC10 / MT编译的程序给我这个错误:“此应用程序无法启动,因为找不到MSVCRXXX.dll。重新安装应用程序可能会解决问题“。如何使我的程序与这个版本的Windows兼容,除了显然用我的程序运送dll(我真的不想这样做)。我知道问题是这个特定的操作系统版本没有附带MSVCR100.dll但是没有编译/ MT应该修复它?它也无法在Windows 7上运行。为什么编译器会忽略我的/ MT标志?!

1 个答案:

答案 0 :(得分:2)

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

  

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

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

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

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