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