Fehler beim Einbinden einer Boost lib



  • Hallo,

    ich versuche mich gerade an C++ und bin dabei auch auf die boost Bibliothek gestoßen, die ich gerne mal ausprobiert hätte.

    Wenn ich jedoch folgende 2 include Anweisungen in meinen Code aufnehme:

    #include <boost/filesystem/operations.hpp>
    #include <boost/filesystem/fstream.hpp>
    

    Bekomme ich die Fehlermeldung:

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

    Ich bin eigentlich genau nach der Anleitung auf der boost Website vorgegangen, und das keine Test-Programm was da auch aufgeführt ist, funktionierte auch problemlos.

    Was muss ich da noch einstellen, um den Fehler zu beheben?

    Ich verwende Visual C++ 2008 Express Edition (unter Windows XP).

    Für eventuelle Vorschläge wäre ich sehr dankbar!



  • hast du die entsprechenden libraries erstellt? und den lib-pfad so eingestellt, dass die auch gefunden werden?



  • Jester schrieb:

    hast du die entsprechenden libraries erstellt? und den lib-pfad so eingestellt, dass die auch gefunden werden?

    Also, wie man wahrscheinlich schon im ersten Beitrag erkennen kann bin ich noch nicht firm in C++; aber ich kann mal sagen, dass ich das Verzeichnis, in dem Boost liegt, schon als zusätzliches include Verzeichnis angegeben habe bei meinem Projekt. Wie allerdings erstelle ich die libraries?

    EDIT:
    Um mal genauer zu sein, was ich bisher gemacht habe:
    http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html#build-a-simple-program-using-boost



  • Nash12 schrieb:

    EDIT:
    Um mal genauer zu sein, was ich bisher gemacht habe:
    http://www.boost.org/doc/libs/1_35_0/more/getting_started/windows.html#build-a-simple-program-using-boost

    Darunter geht es weiter... Es gibt Boost-Bestandteile die nicht mit ausschließlich Headern arbeiten, und daher als compilierte Bibliotheken vorliegen müssen (Dies ist der kompliziertere Teil...).

    Falls du zufälligerweise eine der im Schritt 1. erwähnten Compiler verwendest kannst du dir alternativ aber auch das Leben leicht machen, und die dort erwähnten Installer verwenden (wo bereits diese Arbeit erledigt wurde).

    cu André



  • Also, ich hab die binaries erstellen können, ging ja doch einfacher als gedacht. Jetzt habe ich ein Verzeichnis, das ich als Zielverzeichnis beim build Vorgang angegeben habe, namens "build-boost_1_35_0".

    Da ist drin z.B. boost_regex-vc90-mt-1_35.lib (in einem Unterverzeichnis).

    Sowohl beim Linker als auch beim C/C++ Tab habe ich bei den Einstellungen den Pfad zu dem Unterverzeichnis angegeben, wo diese lib Datei liegt. Trotzdem kommt die Fehlermeldung:

    LINK : fatal error LNK1104: Datei "libboost_regex-vc90-mt-gd-1_35.lib" kann nicht geöffnet werden.

    Muss ich den Pfad sonst noch irgendwo einstellen?



  • du musst auch noch den namen der lib beim linker bei den zusätzlichen inputdateien angeben



  • Wo macht man denn das? Ich bin bei Linker -> Eingabe -> Zusätzliche Abhängigkeiten rein, und hab bei Zusätzliche Abhängigkeiten in eine Zeile "boost_regex-vc90-mt-1_35.lib" geschrieben (ohne die Anführungszeichen). Bei Linker -> Allgemein -> Zusätzliche Biblitheksverzeichnisse hab ich
    C:\Programme\boost\build-boost_1_35_0\boost\bin.v2\libs\regex\build\msvc-9.0express\release\threading-multi

    angegeben. Da ist die lib eigentlich auch zu finden.

    Stimmt das so? Funktioniert leider immer noch nicht.



  • Nash12 schrieb:

    Wo macht man denn das?...

    Also in die Zusätzlichen Abhängigkeiten habe ich es garnicht eingefügt, bei mir reichte ist nur das Libverzeichnis als zusätzliches Bibliotheksverzeichnis eingetragen (Bei mir liegen alle libs/dlls in einem Verzeichnis, das Ausgabeverzeichnis kann man beim erstellen aber auch angeben).



  • Wenn du boost mit --toolset=msvc stage erstellt hättest, wären alle libs und dlls in einem Verzeichnis, dass du VC++ sagen musst.

    Außerdem meldet er:

    LINK : fatal error LNK1104: Datei "libboost_regex-vc90-mt-gd-1_35.lib" kann nicht geöffnet werden.

    Du hast aber nur die boost_regex-vc90-mt-1_35.lib.
    das hängt damit zusammen, dass das eine statisch ist und das andere nicht. Wenn du sowohl statische als auch dynamische libs willst, musst du zum erstellen noch den zusätzlichen Parameter

    --build-type=complete
    

    angeben.

    MfG Steef


Anmelden zum Antworten