为了账号安全,请及时绑定邮箱和手机立即绑定

错误LNK2038:检测到“ _MSC_VER”不匹配:值“ 1600”与CppFile1.obj

错误LNK2038:检测到“ _MSC_VER”不匹配:值“ 1600”与CppFile1.obj

C++
紫衣仙女 2019-11-30 13:31:07
我将项目从VS2010转换为VS2012,但是在某些项目中出现_MSC_VER链接器错误。经过长时间的谷歌浏览后,我发现问题是由于在VS2010中创建的库与VS2012的链接所致。我如何找出哪个项目导致了错误?在这里,我引用错误:Error   6   error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj      D:\ProjectLocation\Projectname1.lib(CppFile2.obj) Projectname2Error   15  error LNK2001: unresolved external symbol "private: static void __cdecl std::locale::facet::_Facet_Register(class std::locale::facet *)" (?_Facet_Register@facet@locale@std@@CAXPAV123@@Z)  D:\ProjectLocation\Projectname1.lib(CppFile3.obj)   Projectname2Error   13  error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj    D:\ProjectLocation\Projectname1.lib(CppFile4.obj)   Projectname2Error   12  error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj    D:\ProjectLocation\Projectname1.lib(CppFile5.obj)   Projectname2Error   10  error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj    D:\ProjectLocation\Projectname1.lib(CppFile6.obj)   Projectname2Error   11  error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj    D:\ProjectLocation\Projectname1.lib(CppFile7.obj)   Projectname2Error   9   error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj    D:\ProjectLocation\Projectname1.lib(CppFile8.obj)   Projectname2Error   4   error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj       D:\ProjectLocation\Projectname1.lib(CppFile9.obj)    Projectname2Error   14  error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj    D:\ProjectLocation\Projectname1.lib(CppFile10.obj)  Projectname2
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

您正在尝试链接由不同版本的编译器编译的对象。VS的现代版本不支持该功能,至少在使用C ++标准库的情况下不支持。标准库的不同版本是二进制不兼容的,因此您需要使用相同版本来编译链接器的所有输入。确保重新编译所有要链接的对象。

编译器错误为涉及的对象命名,因此问题已找到所需信息的信息。具体来说,似乎您要链接的静态库需要重新编译。

因此,解决方案是使用VS2012重新编译Projectname1.lib。


查看完整回答
反对 回复 2019-11-30
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

对于解决方案中的每个项目,请确保


属性>配置。属性>常规>平台工具集


适用于所有人,v100适用于Visual Studio 2010,v110适用于Visual Studio 2012


您还可能正在使用Visual Studio 2012中的v100


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 1210 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信