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

我正在将我的项目从VS2010转换为VS2012.But在某些项目中出现_MSC_VER链接器错误。 通过谷歌漫长的冲浪后,我发现这个问题是由于在VS2010中创build的库链接到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) Projectname2 Error 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) Projectname2 Error 13 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile4.obj) Projectname2 Error 12 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile5.obj) Projectname2 Error 10 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile6.obj) Projectname2 Error 11 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile7.obj) Projectname2 Error 9 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile8.obj) Projectname2 Error 4 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile9.obj) Projectname2 Error 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 Error 7 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile11.obj) Projectname2 Error 8 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile12.obj) Projectname2 Error 5 error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1700' in CppFile1.obj D:\ProjectLocation\Projectname1.lib(CppFile13.obj) Projectname2 

您正尝试链接由不同版本的编译器编译的对象。 这在VS的现代版本中是不被支持的,至less在你使用C ++标准库的时候是不行的。 标准库的不同版本是二进制不兼容的,因此您需要使用相同的版本编译链接器的所有input。 确保您重新编译所有要链接的对象。

编译器错误命名涉及的对象,所以问题的信息已经有你正在寻找的答案。 具体来看,你正在连接的静态库似乎需要重新编译。

为您的解决scheme中的每个项目确保

属性>configuration。 属性>常规>平台工具集

是他们所有人之一,视觉工作室2010年的v100,视觉工作室2012年的v110

你也可能从Visual Studio 2012开始使用v100

我还从VS2010导入了一些项目到VS 2012.我有同样的错误。 当我设置属性>configuration时,错误消失。 属性>常规>平台工具集到v100(VS2010)。 但是,这可能不是正确的做法。

我从2010年升级到2013年,在更改了所有项目的平台工具集之后,我需要右键单击解决scheme并selectredirect…以使其工作。