C++ / Boost Filesystem-обнаружено несоответствие для "MSC VER": значение "1700" не соответствует значению "1600"
Я новичок в C++ и Boost. Я делаю небольшую простую программу, чтобы попытаться изучить библиотеку файловой системы Boost. Я следовал указаниям, чтобы построить Boost libs. И теперь, когда я пытаюсь скомпилировать этот простой код я получаю 6 этих ошибок.
Error 5 error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in App.obj C:SOURCEConsoleApp2ConsoleApp2libboost_filesystem-vc110-mt-gd-1_51.lib(codecvt_error_category.obj) ConsoleApp2 Error 1 error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in App.obj C:SOURCEConsoleApp2ConsoleApp2libboost_filesystem-vc110-mt-gd-1_51.lib(operations.obj) ConsoleApp2 Error 2 error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in App.obj C:SOURCEConsoleApp2ConsoleApp2libboost_filesystem-vc110-mt-gd-1_51.lib(path.obj) ConsoleApp2 Error 3 error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in App.obj C:SOURCEConsoleApp2ConsoleApp2libboost_filesystem-vc110-mt-gd-1_51.lib(path_traits.obj) ConsoleApp2 Error 4 error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in App.obj C:SOURCEConsoleApp2ConsoleApp2libboost_filesystem-vc110-mt-gd-1_51.lib(windows_file_codecvt.obj) ConsoleApp2 Error 6 error LNK1104: cannot open file 'libboost_filesystem-vc100-mt-gd-1_51.lib' C:SOURCEConsoleApp2ConsoleApp2LINK 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 перед ним.
4 ответов
libboost_filesystem-vc110-mt-gd-1_51.lib
- это библиотека, которая была построена с VS 2012 (также известная как VC 11.0), как указано в vc110
в схеме именования. Эта библиотека не будет правильно связываться с объектами, построенными с VS 2010 (также известным как VC 10.0).
Если вы хотите создать свою программу с VS 2010, вам нужно будет получить или создать библиотеки boost для VS 2010.
открыть *.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'">
и перестроить решение снова. Вы увидите, что компиляция проекта прошла успешно.
Я пытался скомпилировать код Teamcenter ITK C++ и получил то же сообщение об ошибке:
ошибка LNK2038: обнаружено несоответствие для '_MSC_VER': значение '1700' не значение соответствия '1600' в itk_main.параметр obj
временное решение я искал msvcprt.lib сидит где-то в c: (использовать все.exe для поиска, который можно найти на voidtools.com)
открыл этот файл в NP++ или текстовом редакторе поиск ключевого слова _MSC_VER и изменил значение /FAILIFMISMATCH:"подразделе, посвященном атрибуту _msc_ver=1700" в /FAILIFMISMATCH:"подразделе, посвященном атрибуту _msc_ver=1600"
и да, я смог скомпилировать.
решение упомянутых прем Наиду работал для меня.
но не совсем msvcprt.Либ!--1-->
искать .lib файл в msg ошибки.
в моем случае был какой-то файл.движение за освобождение , я искал в проводнике, который дал два похожих файла в папке
1)выпуск 2) Debug
открыл какой-то файл.lib в папке debug, открытой в NP++, найдена и заменена например: 1700 с 1900 (VS 2015) в моем случае
перекомпиляции, Виола ошибка исчезла.
для краткого объяснения, почему, как есть несколько технических причин, приведенных другими пользователями.
PS: Я компилировал код, построенный в VS 2012 в VS2015, а 1700-версия компилятора для VS 2012, 1900 для VS 2015