Probleme mit der Boost Bibiothek



  • Sehr geehrte Mitglieder der Comunity

    Ich habe "mal wieder" ein kleines Problem.

    Ich benötige für meine C++ Projekt die Boost Bibiothek.
    Leider komme ich mit den "herder-only" Bibioteken nicht aus.
    Genauer gesagt, benötige ich die Serialisierungs Bibiothek um Objekte (Klassen)zu Serialisieren.
    In meinem Fall die Std::Vector Klasse.

    Deswegen musste ich die restlichen Bibiotheken neu erstellen.

    Nach dem erstellen habe im Projekt folgende Verweise eingetragen.

    Include -> C\boost_1_57_0
    Lib -> C\boost_1_57_0\stage\lib
    (So stand es in Eingabeauffordeurng, nachdem ich die Bibiothek neu erstellte)

    Als ich dann die nätigen Dateien einband, bemerkte ich folgenden Fehler beim erstellen

    error LNK1104: Datei "libboost_serialization-vc120-mt-gd-1_55.lib"
    kann nicht ge÷ffnet werden.

    Es existiert eine Datei mit dem Namen,
    "libboost_serialization-vc120-mt-gd-1_57.lib"

    Er sucht die 1_55, Ich habe aber die Boost version 1_57 erstellt.

    Zusatzinfos
    Ich benutze Visual Studio 2013.



  • Welche Einstellungen hast du in Visual Studio alles vorgenommen? Da gibt es
    Additional Include Directories
    Additional Library Directories
    Additional Dependencies



  • Hallo Sebastian,

    Der Linker versucht genau dann die Libs der 1.55 zu linken, wenn Du die Header-Dateien der 1.55 inkludierst.
    Prüfe die Einstellungen im VS2013 Projekt->Properties->C/C++->General->Additional Include Directories - dort steht mit hoher Wahrscheinlichkeit noch ein Verweis auf ein Directory der Boost-Version 1.55. Das muss entfernt werden.

    Gruß
    Werner



  • Ich habe folgende Verweise/Einträge gemacht, die die Boost Lib. betreffen.

    C/C++ -> Zusätzliche Incl. verweise :: C:\boost_1_57_0
    VC++-verzeichnisse -> Bibiotheks Verweise :: C:\boost_1_57_0\stage\lib:

    Im Programm binde ich die Herderdateien von Boost so ein
    #include <boost/archive/text_iarchive.hpp>
    #include <boost/archive/text_oarchive.hpp>

    Muss ich auch bei "zusätzlicher Abhängigkeit" etwas eintragen? Normal macht man das bei Bibiotheken ja so, oder?

    [Zitat von Werner Salomon]
    "Prüfe die Einstellungen im VS2013 Projekt->Properties->C/C++->General->Additional Include Directories - dort steht mit hoher Wahrscheinlichkeit noch ein Verweis auf ein Directory der Boost-Version 1.55. Das muss entfernt werden."

    Ich habe nur die Boost 1_57_0 auf meinem Rechner drauf.

    Ich war mal so Schlau (jenachdem auch Dumm 😃 ), und habe aus der 1_57_0.lib eine 1_55_0.lib gemacht.
    So scheint es zwar zu funktioniere, aber das kann nicht die übliche Lösung des Problems sein, und ich werde nicht weiter programmieren, bis er die 1_57_0 nutzt.

    ____________________________________________
    Eine frage nebenbei. wie kann ich hier im Forum Zitate von anderen Beiträgen einfügen?



  • Hallo Sebastian,

    der Name einer Lib wird in der Hpp-Datei 'boost/config/auto_link.hpp' zusammen gebaut. Die boost-Version kommt über die Hpp-Datei 'boost/version.hpp' rein. Entscheidend für die boost-Version im Namen der Libs ist das #define BOOST_LIB_VERSION. Schau da mal rein, was hinter diesem #define steht.

    Sebastian Müller schrieb:

    Ich war mal so Schlau (jenachdem auch Dumm 😃 ), und habe aus der 1_57_0.lib eine 1_55_0.lib gemacht.

    .. eh - das ist sicher ein falscher Weg!

    Sebastian Müller schrieb:

    Eine frage nebenbei. wie kann ich hier im Forum Zitate von anderen Beiträgen einfügen?

    am einfachsten indem Du man - während man eine Antwort verfasst - oben rechts bei dem Beitrag auf 'Zitieren' drückt und anschließend alles entfernt, was man nicht zitieren wollte.
    Oder eben in Qutos einfassen und hinter das "[quote" den Autor schreiben also so:
    [ quote="Name des Autors"]hier steht das Zitat[/quote]

    Gruß
    Werner



  • in version.hpp steht

    #define BOOST_LIB_VERSION "1_57"
    

    Meiner Meinung nach ja auch richtig.

    Gruß
    Sebastian



  • .. dann sehe ich noch zwei Möglichkeiten:
    1. entweder inkludierst Du diese Hpp-Dateien nicht
    2. In Deinem Projekt stehen unter 'Linker->Input->Additional Dependencies' noch die 1.55-Libs

    Nach Deiner Beschreibung kann man 1.) ausschließen, denn Du hast ja den include-Pfad überprüft
    und 2.) auch, denn dann hätte nach der Umbenennung der Libs nach '1_55' der Build mit ".. kann lib_1_57 nicht öffnen" fehlschlagen müssen. Es sei denn, Du hast sie kopiert?

    Bitte definiere in Deinem Projekt unter 'C/C++->Preprocessor->Preprocessor Definitions' BOOST_LIB_DIAGNOSTIC und sage uns dann, was der Build so ausspukt. Bennen vorher die Libs wieder mit ihrem Originalnamen.



  • Wenn gar nichts mehr hilft hol dir einfach BlueGo, erstelle boost neu und mach ein komplett neues Projekt in VS.



  • Gute Nachrichten

    Es scheint nun zu funktionieren. In der Ausgabe kann man nachlesen, das er die
    1_57 Lädt.

    Ich habe folgendes gemacht.

    Vorher hatte ich die Veizeichnisse so angegben

    VC++ - Verzeichniss \\ Includeverzeichniss -> C:\Boost_1_57
    VC++ - Verzeichniss \\ Bibiotheksverzeichniss -> C:\Boost_1_57\stage\lib

    Ich habe die Verzeichnisse nun woanders angegeben

    C\C++ \\ Allgemein \\ Zusätzlich Includeverzeichnisse -> C:\Boost_1_57
    Linker \\ Allgemein \\ Zusätzliche Bibiotheksverzeichniss -> C:\Boost_1_57\stage\lib

    ________________________________________________________________________________
    Damit ich zusätzlich noch was lernen kann.

    Was ist eigendlich der Unterscheid zwichen den Verzeichnissen bei Include/Linker und dem bei VC++ Verzeichniss?
    Könte mir einer bitte mal eine Erkärung geben, was es damit aufsich hat.

    Ich habe das Thema Bibiotheken in meinem Buch noch nicht durchgenommen, Ich benutze sie nur, weil ich ein paar Bibiotheken benötige. (wxWidgets / Boost)
    Also bitte verzeiht meine unwissenheit hier. das wird sich bald ändern.

    __________________________________________________________________________________
    Ich bedanke mich nochmal für Hilfe die ihr mir gegeben habt.
    Vielen Dank 🙂


Anmelden zum Antworten