Подтвердить что ты не робот

Ошибка LNK2038: обнаружено несоответствие для "_MSC_VER": значение "1600" не соответствует значению "1700" в CppFile1.obj

Я преобразовывал свои проекты из VS2010 в VS2012.Но я получаю ошибку компоновщика _MSC_VER в некоторых проектах. После долгого просмотра через Google я обнаружил, что проблема связана с привязкой библиотеки, созданной в 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 *)" ([email protected]@[email protected]@@[email protected]@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
4b9b3361

Ответ 1

Вы пытаетесь связать объекты, скомпилированные разными версиями компилятора. Это не поддерживается в современных версиях VS, по крайней мере, если вы используете стандартную библиотеку C++. Различные версии стандартной библиотеки двоичные несовместимы, поэтому вам нужно, чтобы все входы в компоновщик были скомпилированы с той же версией. Убедитесь, что вы перекомпилируете все объекты, которые должны быть связаны.

Ошибка компилятора указывает объекты, связанные с тем, что информация уже имеет ответ, который вы ищете. В частности, кажется, что статическая библиотека, которую вы связываете, должна быть перекомпилирована.

Таким образом, решение заключается в перекомпиляции Projectname1.lib с VS2012.

Ответ 2

для каждого проекта в вашем решении убедитесь, что

Свойствa > Конфигурация. Свойствa > Общие > Набор инструментов для платформы

является одним для всех из них, v100 для визуальной студии 2010, v110 для визуальной студии 2012

вы также можете работать с v100 с visual studio 2012

Ответ 3

Я также импортировал некоторые проекты из VS2010 в VS 2012. У меня были те же ошибки. Ошибки исчезли, когда я вернул Свойствa > Конфигурация. Свойствa > Общие > Набор инструментов для платформы v100 (VS2010). Однако это может быть не правильный подход.

Ответ 4

Я обновил с 2010 по 2013 год и после изменения всех наборов инструментов для платформы, мне нужно щелкнуть правой кнопкой мыши по Solution и выбрать Retarget..., чтобы заставить его работать.