webentwicklung-frage-antwort-db.com.de

C++/Boost-Dateisystem - Übereinstimmung für '_MSC_VER' festgestellt: Wert '1700' stimmt nicht mit Wert '1600' überein

Ich bin neu in C++ und Boost. Ich mache ein kleines einfaches Programm, um die Boost Filesystem-Bibliothek zu lernen. Ich habe die Anweisungen befolgt, um die Boost-Libs zu bauen. Und jetzt, wenn ich versuche, diesen einfachen Code zu kompilieren, bekomme ich 6 dieser Fehler. 

 Fehler 5 Fehler LNK2038: Übereinstimmung für '_MSC_VER' festgestellt: Der Wert '1700' stimmt nicht mit dem Wert '1600' in App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd- überein. 1_51.lib (codecvt_error_category.obj) ConsoleApp2 
 Fehler 1 Fehler LNK2038: Übereinstimmung für '_MSC_VER' festgestellt: Der Wert '1700' stimmt nicht mit dem Wert '1600' in App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2 überein\libboost_filesystem-vc110-mt-Gd-1_51.lib (operations.obj) ConsoleApp2 
 Fehler 2 Fehler LNK2038: Es wurde eine Nichtübereinstimmung für '_MSC_VER' festgestellt: Der Wert '1700' stimmt nicht mit dem Wert '1600' in App überein. obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib (path.obj) ConsoleApp2 
 Fehler 3 Fehler LNK2038: Nicht übereinstimmende Übereinstimmung für '_MSC_VER': Wert '1700' doesn ' t Entsprechender Wert '1600' in App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib (path_traits.obj) ConsoleApp2 
 Fehler 4 Fehler LNK2038: Es wurde ein Fehler gefunden. _MSC_VER ': Wert' 1700 'gilt nicht Wert '1600' in App.obj C:\SOURCE\ConsoleApp2\ConsoleApp2\libboost_filesystem-vc110-mt-Gd-1_51.lib (windows_file_codecvt.obj) ConsoleApp2 
 Fehler 6 Fehler LNK1104 -vc100-mt-Gd-1_51.lib 'C:\SOURCE\ConsoleApp2\ConsoleApp2\LINK ConsoleApp2 

Mein Code in App.cpp in meinem ConsoleApp2-Projekt

#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;
}

Ich versuche, die App mit Visual Studio 2010 zu kompilieren. Einige der Informationen, die ich online gefunden habe, bezogen sich auf VS 2012. Das finde ich nicht zutreffend. Ich möchte versuchen, die 5 Nichtübereinstimmungsfehler und den endgültigen Link-Fehler zu beheben. Ich hoffe, dass der letzte Fehler mit den 5 davor zusammenhängt.

9
BuddyJoe

libboost_filesystem-vc110-mt-Gd-1_51.lib ist eine Bibliothek, die mit VS 2012 erstellt wurde (auch bekannt als VC 11.0), wie in der Namenskonvention durch vc110 angegeben. Diese Bibliothek kann nicht ordnungsgemäß mit Objekten verknüpft werden, die mit VS 2010 erstellt wurden (auch bekannt als VC 10.0).

Wenn Sie Ihr Programm mit VS 2010 erstellen möchten, müssen Sie Boost-Bibliotheken für VS 2010 abrufen oder erstellen.

14
Michael Burr

Öffnen Sie die *.vcxproj-Datei mit einem Texteditor.

Suchen und löschen Sie das <_ProjectFileVersion>-Element, und speichern Sie die Datei.

Beispiel,

</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'">

Und bauen Sie die Lösung erneut auf. Das Projekt wird erfolgreich kompiliert.

3

Ich habe versucht, den Teamcenter ITK C++ - Code zu kompilieren und erhielt die gleiche Fehlermeldung:

fehler LNK2038: Keine Übereinstimmung für '_MSC_VER' festgestellt: Der Wert '1700' stimmt nicht mit dem Wert '1600' in itk_main.obj überein

Die Problemumgehung, nach der ich gesucht habe, war die Suche nach msvcprt.lib, die irgendwo in c: Sitzt (verwendete alles.exe für die Suche, die auf voidtools.com gefunden werden kann).

Diese Datei wurde in NP ++ oder im Texteditor nach dem Schlüsselwort _MSC_VER geöffnet und der Wert/FAILIFMISMATCH: "_ MSC_VER = 1700" in/FAILIFMISMATCH: "_ MSC_VER = 1600" geändert. 

Und ja, ich konnte kompilieren.

0
vignesh naidu