Ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение 1700 не соответствует значению 1900 в xxxx.obj - PullRequest
0 голосов
/ 14 января 2019

преобразовывал мои проекты из VS2012 в VS2015. Но в некоторых проектах я получаю ошибку компоновщика _MSC_VER. После долгих поисков в Google я обнаружил, что проблема связана с подключением библиотеки, созданной в VS2012, к VS2015.

Как узнать, какой проект вызывает ошибку? Здесь я цитирую ошибку: Ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение 1700 не соответствует значению 1900 в xxxx.obj

Ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение «1700» не соответствует значению «1900» в xxxx.obj

1 Ответ

0 голосов
/ 14 января 2019

Это указывает на то, что некоторые из ваших кодов или статических библиотек созданы с помощью компилятора Visual Studio 2012 и заголовков / библиотек времени выполнения C / C ++, а другой код построен с помощью компилятора Visual Studio 2015 и заголовков / библиотек времени выполнения C / C ++.

Хотя некоторые виды связей стабильны между выпусками Visual C ++ (старые функции C, extern "C" функции, интерфейсы COM и т. Д.), Все связи C ++ зависят от версии. Это особенно верно в отношении стандартной библиотеки C ++ (например, стандартной библиотеки шаблонов), которая меняет структуру памяти от версии к версии, поэтому может произойти сбой во время выполнения.

Чтобы избежать этого, библиотека добавляет штамп ссылки _MSC_VER к модулям выходного кода, чтобы улавливать эти виды несоответствий во время соединения.

По своему дизайну среда выполнения C / C ++ Visual Studio 2017 была сделана двоичной совместимой с средой выполнения Visual Studio 2015 Update 3 C / C ++, чтобы упростить адаптацию. Это не нормальный шаблон, и VS 2012 не двоично совместим с VS 2015/2017. Смотрите это сообщение в блоге .

...