error LNK2038、error LNK1123

error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”

问题描述:

在用VS2013编译时出现下面的错误

error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”

error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”


问题分析:

_MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值:

MS VC++ 10.0 _MSC_VER = 1600

MS VC++ 9.0 _MSC_VER = 1500

MS VC++ 8.0 _MSC_VER = 1400

MS VC++ 7.1 _MSC_VER = 1310

MS VC++ 7.0 _MSC_VER = 1300

MS VC++ 6.0 _MSC_VER = 1200

MS VC++ 5.0 _MSC_VER = 1100

其中MS VC++ 10.0就是Visual C++ 2010,MS VC++ 9.0就是Visual C++ 2008,MS VC++ 8.0就是Visual C++ 2005。

由于你使用了vs2012,相比较vs2010以及之前的vs为更高版本,致使msvc不兼容!


解决方法:

在项目右键属性-配置属性-常规中,平台工具集选用为合适平台即可,我这里就选择 vs2010 (v100).




error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

       VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。
       在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:
       第一步:与上相同。
       第二步:将 项目|项目属性|配置属性|连接器|清单文件|嵌入清单 “是”改为“否”。
       第三步:一般计算机经过上两步设置就能解决问题了,但是如果还有问题,那就按一下方法解决:
       (1)计算机是否为64bit操作系统,如是,继续2。
       (2)查找是否有两个cvtres.exe。一个是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe, 另一个是C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe。右键属性|详细信息 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。

意外的是,治本的办法是第三步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。

你可能感兴趣的:(error,error,LNK1123,VS2013编译VS2010,LNK2038)