Visual Studio — C ++ / Boost Filesystem — обнаружено несоответствие для _MSC_VER: значение «1700» не соответствует значению «1600»

Я новичок в C ++ и Boost. Я делаю небольшую простую программу, чтобы попытаться изучить библиотеку Boost Filesystem. Я следовал указаниям по созданию Boost libs. И теперь, когда я пытаюсь скомпилировать этот простой код, я получаю 6 таких ошибок.

Ошибка 5, ошибка LNK2038: для '_MSC_VER' обнаружено несоответствие: значение '1700' не соответствует значению '1600' в App.obj C: \ SOURCE \ ConsoleApp2 \ ConsoleApp2 \ libboost_filesystem-vc110-mt-gd-1_51.lib (codecvt_error_category) .obj) ConsoleApp2
Ошибка 1 ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение «1700» не соответствует значению «1600» в App.obj C: \ SOURCE \ ConsoleApp2 \ ConsoleApp2 \ libboost_filesystem-vc110-mt-gd-1_51.lib (операции .obj) ConsoleApp2
Ошибка 2, ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение «1700» не соответствует значению «1600» в App.obj C: \ SOURCE \ ConsoleApp2 \ ConsoleApp2 \ libboost_filesystem-vc110-mt-gd-1_51.lib (путь .obj) ConsoleApp2
Ошибка 3, ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение «1700» не соответствует значению «1600» в App.obj C: \ SOURCE \ ConsoleApp2 \ ConsoleApp2 \ libboost_filesystem-vc110-mt-gd-1_51.lib (path_traits .obj) ConsoleApp2
Ошибка 4, ошибка LNK2038: обнаружено несоответствие для _MSC_VER: значение «1700» не соответствует значению «1600» в App.obj C: \ SOURCE \ ConsoleApp2 \ ConsoleApp2 \ libboost_filesystem-vc110-mt-gd-1_51.lib (windows_file_codecvt) .obj) ConsoleApp2
Ошибка 6, ошибка LNK1104: невозможно открыть файл 'libboost_filesystem-vc100-mt-gd-1_51.lib' C: \ SOURCE \ ConsoleApp2 \ ConsoleApp2 \ LINK ConsoleApp2

Мой код в App.cpp в моем проекте ConsoleApp2

#include <iostream>
#include <boost/filesystem.hpp>

using namespace std;
using namespace boost::filesystem;

int main(void)
{
path p = "C:\\TestFiles";
cout << is_directory(p);

return 0;
}

Я пытаюсь скомпилировать приложение с помощью Visual Studio 2010. Часть информации, которую я нашел в Интернете, была связана с VS 2012. Это, я не думаю, относится ко мне. Я хотел бы попытаться решить 5 ошибок несоответствия и окончательную ошибку ссылки. Я надеюсь, что последняя ошибка связана с 5 до него.

9

Решение

libboost_filesystem-vc110-mt-gd-1_51.lib библиотека, которая была построена с VS 2012 (также известный как VC 11.0), как указано vc110 в соглашении об именах. Эта библиотека не будет правильно связываться с объектами, созданными с помощью VS 2010 (также известного как VC 10.0).

Если вы хотите собрать свою программу с VS 2010, вам нужно получить или собрать библиотеки повышения для VS 2010.

14

Другие решения

Открой *.vcxproj файл с текстовым редактором.

Найти и удалить <_ProjectFileVersion> элемент, а затем сохраните файл.

Пример,

</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>

<_ProjectFileVersion>11.0.30319.1</_ProjectFileVersion> <--- Delete this element

</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

И восстановите решение снова. Вы увидите, что проект успешно компилируется.

3

Я пытался скомпилировать код Teamcenter ITK C ++ и получил то же сообщение об ошибке:

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

Обходной путь, который я сделал, искал msvcprt.lib, находящийся где-то в c:
(использовал для поиска everything.exe, который можно найти на voidtools.com)

Открыл этот файл в NP ++ или текстовом редакторе для поиска по ключевому слову _MSC_VER и изменил значение / FAILIFMISMATCH: «_ MSC_VER = 1700» на / FAILIFMISMATCH: «_ MSC_VER = 1600»

И да, я смог собрать.

0

Решение, упомянутое виньешем наиду, сработало для меня.

но не совсем msvcprt.lib

найдите файл .lib в сообщении об ошибке.

В моем случае был файл somefile.lib,
я искал в проводнике, который дал два одинаковых файла в папке

1) Выпуск
2) отладки

Открыл somefile.lib в папке отладки, открыл в NP ++, нашел и заменил
например: 1700 с 1900 (VS 2015) в моем случае

перекомпилирована, ошибка альта исчезла.

Для краткого объяснения, почему, как есть несколько технических причин, приведенных другими пользователями.

PS: я компилировал код, встроенный в VS 2012 в VS2015, а 1700 — это версия компилятора для VS 2012, 1900 для VS 2015

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector