Boost libs linken/einbinden?



  • Hallo allerseits,
    also das ist das erstmal dass ich ne externe Library einbinden will und noch dazu bin ich mit Visual C++ auch überhaupt nicht vertraut! Bitte mich nicht gleich wegflamen

    Ich würde gerne in mein Projekt die Libraries von Boost mit einbinden (und auch die Header-Files).
    Mit einem Tutorial hab ich nun via BJam die Boost Bibliotheken gebildet so dass ich nun in dem Ordner "bin.v2" die Libs habe.
    Hier mal der Link zu dem Tutorial: http://www.codeplanet.eu/tutorials/cpp/3-cpp/11-boost-bibliothek.html

    Wie binde ich nun die Libraries und die Header in Visual C++ 2005 EE ein?
    Das check ich leider überhaupt nicht

    Vielen Dank für eure Hilfe
    stEEdZ



  • bitte um Hilfe! 😞



  • geneticZ schrieb:

    bitte um Hilfe! 😞

    1. Gehört das mit Sicherheit nicht in das MFC Forum
    2. Für VC2003-VC2008 gibt es hier eh eine leichtere Lösung (=Installationsversion)

    Und nachdem du es dann installiert hast, kann ich dir mal aufsagen wie ich weiter vorgehe:

    a) Ich lege eine Umgebungsvariable BoostDir an, die auf das Boostverzeichnis verweist [Umgebungsvariablen werden erst nach Neustart übernommen!].
    b) Ich weise dem Projekt als zusätzliches Includeverzeichnis $(BoostDir) hinzu, als zusätzlichen Bibliothekspfad $(BoostDir)\lib und dann lege ich los...

    cu André



  • Hallo André,
    erstmal vielen Dank für deine Antwort!
    Sorry dass das Thema hier nicht reinpasst, aber ich dachte das wäre eine MFC und Visual C++ Abteilung.

    Also den Installer hab ich runtergeladen und auch installed... ich dachte nur ich müsste trotzdem noch mit BJam die Bibliotheken bilden?
    Dann hab ich das wohl doppelt gemoppelt oder wie?

    Naja gut...
    und wie genau erstelle ich eine Umgebungsvariable? 🙄

    Danke im Voraus
    geneticZ



  • Gib doch die Pfade direkt in Visual Studio an:
    Tools->Options->Projects and Solutions->VC++ Directories

    Dort einmal "Include Files" und einmal "library Files" anwählen und den Pfad zu den Boost-Headern bzw. Libs angeben.
    Also z.B bei den includes "C:\boost_1_35_0" und bei den libs "C:\boost_1_35_0\libs"



  • Stefan schrieb:

    Gib doch die Pfade direkt in Visual Studio an:

    An sich kann man das machen, und vermutlich wird es dem OP auch reichen. Ich bin aber ein Arbeitsumfeld gewöhnt, bei dem die Inkludeverzeichnisse auf unterschiedlichen Verzeichnissen liegen können (und Eine Umgebungsvarible dabei hilft diese Rechnerspezifischen Abhängigkeiten zu reduzieren).

    Wenn man alleine oder in einen konsistenten Programmierumfeld arbeitet geht es natürlich einfacher. Anderseits hilft meine Variante auch wenn man den Code weitergibt (weil nur die Umgebungsvariable gesetzt werden muss).

    Falls der OP dennoch wissen will wie es mit Umgebungsvariablen funktioniert:
    Etwas abhängig von der Windowsversion über Systemeinstellungen/System gibt es entweder direkt eine Karteireiteransicht (dort unter Erweitert/Umgebungsvariablen) oder dann noch mit einem zusätzlichen Klick links auf erweiterte Systemeinstellungen [Vista] und dann wie oben... Dort einfach als Wertepaar eintragen.

    (Bei mir steht es unter Systemvariablen, da ich mit mehreren Benutzerkonten arbeiten kann; Und sieht wie folgt aus: [Name der Variablen:][BoostDir], [Wert der Variablen][t:\boost]).

    cu André



  • Vielen Dank an euch beide!
    Das hilft mir schonmal sehr.
    Sollte ich die Boost Libraries als Multithread oder Multithread, static runtime oder was anderes builden?
    ... und worin liegt da der Unterschied bzw was bewirkt was?
    Danke
    geneticZ



  • Lass doch alle Varianten bauen!
    Die Boost-Headers suchen sich per #pragma selbst die richtige Lib aus. Als MSVC-User hat man diesen Komfort, das die Boost-Jungs das in den Headern definiert haben. MSVC muß halt nur wissen, wo die Libs liegen.



  • Ok, also ich habe:
    - boost 1_35_0 installer runtergeladen und installiert (Visusal C++ 2005)
    - dabei alle Varianten bauen lassen
    - unter Directories: includes "C:\boost_1_35_0" und libs "C:\boost_1_35_0\libs eingefügt.

    scheint auch halbwegs zu funktionieren!
    schonmal Danke 🙂

    Nun bekomme dennoch einen Fehler bei meinem Testcode:

    // Boost Dateien includieren
    #include "boost/filesystem/operations.hpp" 
    #include "boost/filesystem/fstream.hpp" 
    #include <iostream>                        
    using namespace std;
    
    // Benutze fs für den Boost filesystem Namensraum
    namespace fs = boost::filesystem; 
    
    int main()
    {
        fs::remove_all("foobar");
        fs::create_directory("foobar");
        ofstream file("foobar/cheeze.txt");
        file << "tastes good!\n";
        file.close();
        if (!fs::exists("foobar/cheeze.txt"))
            cout << "Something is rotten in foobar\n";
    
        return 0;
    }
    

    Fehlermeldung:
    LINK : fatal error LNK1104: Datei "libboost_filesystem-vc80-mt-s-1_35.lib" kann nicht geöffnet werden.

    Habe leider nur die EE Edition, hoffe es liegt nicht daran!
    Danke für eure Hilfe :p



  • Ich glaube das Libs-Verzeichnis stimmt so nicht. Du musst jenes angeben, wo du die libs reingebuildet hast.



  • ist es das nicht?
    also da sind zumindest in den jeweiligen Unterverzeichnissen dann im Folder "src" die jeweiligen .hpp und .cpp files drinnen.



  • Das sind ja auch nicht die Libs!!! Das sind die Sourcen!
    Die Libs heißen so, wie der Linker auch die fehlende Datei bennent. Oder was glaubst du, vermisst er da:

    LINK : fatal error LNK1104: Datei "libboost_filesystem-vc80-mt-s-1_35.lib" kann nicht geöffnet werden.

    Deutlicher gehts nun wirklich nicht. Und da wo diese Datei liegt, ist auch dein Boost-Libs Verzeichnis.



  • BarnieGeroellheimer schrieb:

    Das sind ja auch nicht die Libs!!! Das sind die Sourcen!
    Die Libs heißen so, wie der Linker auch die fehlende Datei bennent. Oder was glaubst du, vermisst er da:

    LINK : fatal error LNK1104: Datei "libboost_filesystem-vc80-mt-s-1_35.lib" kann nicht geöffnet werden.

    Deutlicher gehts nun wirklich nicht. Und da wo diese Datei liegt, ist auch dein Boost-Libs Verzeichnis.

    dann stimmt wohl was mit der Installation nicht, weil ich habe in dem kompletten Ordner boost keine .lib Files!





  • Ich kenne diesen Installer von Boost Consult nicht, aber der legt wahrscheinlich ein Verzeichnis C:\Boost\libs an. Schau da mal nach!

    Wenn nicht: http://www.kharchi.eu/wiki/doku.php?id=cpp:boost:install



  • ok, ich glaub ich habs!
    Zumindest die Boostgeschichte.
    Jetzt bekomm ich leider die Fehlermeldung dass mir uuid.lib fehlt.
    Glaube aber das is nun wirklich ein Express Edition Problem 👎



  • Haste kein Platform SDK installiert?





  • ok, habe alles befolgt!
    Danke war auch ein Lerneffekt vorhanden :p

    Doch das nächste Problem steht natürlich vor der Tür.
    Jetzt zeigt der Compiler keine Fehler mehr an dafür kommt aber ein Error Window:

    "Diese Anwendung konnte aufgrund einer falschen Anwendungskonfiguartion nicht gestartet werden. Überprüfen sie die Manifestdatei auf mögliche Fehler."

    😞



  • Tja, scheint die Manifest-Datei falsch zu sein. Steht doch da. Aber eigentlich muß man gar keine Manifest selber schreiben. Die wird beim anlegen des Projektes eigentlich autom. erzeugt und funktioniert dann auch.
    Ansonsten mal in die MSDN-Hilfe schauen...


Anmelden zum Antworten