猿问

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

我将项目从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) 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

紫衣仙女
浏览 1220回答 3
3回答

慕标5832272

您正在尝试链接由不同版本的编译器编译的对象。VS的现代版本不支持该功能,至少在使用C ++标准库的情况下不支持。标准库的不同版本是二进制不兼容的,因此您需要使用相同版本来编译链接器的所有输入。确保重新编译所有要链接的对象。编译器错误为涉及的对象命名,因此问题已找到所需信息的信息。具体来说,似乎您要链接的静态库需要重新编译。因此,解决方案是使用VS2012重新编译Projectname1.lib。

慕桂英4014372

对于解决方案中的每个项目,请确保属性>配置。属性>常规>平台工具集适用于所有人,v100适用于Visual Studio 2010,v110适用于Visual Studio 2012您还可能正在使用Visual Studio 2012中的v100
随时随地看视频慕课网APP
我要回答