Boost::Thread linking klappt nicht



  • Hey,

    ich habe folgendes Problem, ich benutze Visual C++ 2008 Express und will mit Boost::Thread arbeiten. Ich habe mir die dementsprechende vorcompilierte Version runter geladen und installiert.
    Danach bei

    eigenschaften->C++->allgemein->Zusätzliche Includeverzeichnisse->"C:\Programme\boost\boost_1_42" gesetzt
    und bei
    eigenschaften->linker->zusätzliche Bibliotheksverzeichnisse->"C:\Programme\boost\boost_1_42\lib\"
    

    eingestellt.
    Genauso wie das [Tutorial](file://localhost/C:/Programme/boost/boost_1_42/more/getting_started/windows.html#install-visual-studio-binaries) es angab. Nun aber wenn ich compilieren will kommt der Fehler: LINK : fatal error LNK1104: Datei "libboost_date_time-vc90-mt-gd-1_42.lib" kann nicht geöffnet werden. Google hat zwar mehrere Ergebnisse ausgespuckt von denen aber die meisten sagten "hol die die Vorcomplilierten Header" (wie ich es gemacht habe), oder du must dir die dinger noch bauen hier ist der link wies geht und der Link führte zu dem Tutorial was ich 1:1 ausgeführt habe. Kann mir da jemand helfen?



  • Erstmal vorkompilierte Header bringen dir gar nichts. Wenn dann brauchst du vorkompilierte Bibliotheken. Und dort ist mir keine vorkompilierte Boost-Bibliothek bekannt, die die Thread-Bibliothek enthält.

    Also: Selbst kompilieren! Mit der Anleitung von der Boost Webseite schafft selbst der dümmste anzunehmende User dies ohne Probleme.



  • Hallo.

    Hast du denn die lib-Datei, die der dort im Fehler angibt?
    Es reicht nicht nur den Ordner anzugeben bei den Libs, das ist nicht so wie bei den Includes. Da muss man auch noch die spezielle Datei angeben.
    Wo man das macht weiß ich leider auch nicht mehr genau. Hab grad kein VS zur Hand.
    Aber irgendwo in den Projekt-Einstellungen->Linker->Input (oder wie das auch immer heißt), da musst du dann libboost_date_time-vc90-mt-gd-1_42.lib mit angeben.



  • Janjan schrieb:

    Erstmal vorkompilierte Header bringen dir gar nichts. Wenn dann brauchst du vorkompilierte Bibliotheken. Und dort ist mir keine vorkompilierte Boost-Bibliothek bekannt, die die Thread-Bibliothek enthält.

    Ist im BoostPro-Installer enthalten. Einfacher gehts wirklich nicht mehr.



  • Michael E. schrieb:

    Janjan schrieb:

    Erstmal vorkompilierte Header bringen dir gar nichts. Wenn dann brauchst du vorkompilierte Bibliotheken. Und dort ist mir keine vorkompilierte Boost-Bibliothek bekannt, die die Thread-Bibliothek enthält.

    Ist im BoostPro-Installer enthalten. Einfacher gehts wirklich nicht mehr.

    Das wär mir aber ganz neu, dass die auch im BoostPro-installer enthalten ist.



  • Wenn ich das richtig interpretiere sagt dieser Teil des Tuturials aus das ich nix mehr machen muss wenn ich den Installer von BoostPro benutz habe, was ich auch habe, oder obliege ihc da einem Irrtum?

    The installers supplied by BoostPro Computing will download and install pre-compiled binaries into the lib\ subdirectory of the boost root, typically C:\Program Files\boost\boost_1_42_0\lib\. 
    If you installed all variants of the Boost.Regex binary, you're done with this step. Otherwise, please run the installer again and install them now.
    

    Abgesehen davon das ich bei der Installation "thread" habe anklicken müssen dürften doch zu Regex keine Unterschiede bestehen?



  • Janjan schrieb:

    Das wär mir aber ganz neu, dass die auch im BoostPro-installer enthalten ist.

    Ich sitz grad an nem Laptop, auf dem Boost 1.42 mit dem BoostPro-Installer installiert wurde und Boost.Thread funktioniert :p



  • Ich sitz grad an nem Laptop, auf dem Boost 1.42 mit dem BoostPro-Installer installiert wurde und Boost.Thread funktioniert

    Wär nett wenn du mir ne schritt für schritt übersicht geben könntest was du gemacht hast.



  • Ich nehme mal an, du hast dich bereits registriert und bei http://www.boostpro.com/download den Installer runtergeladen.

    Installer starten, agree, agree, Server wählen (Standardeinstellung ist gut). Dann wählst du die Versionen, die du gerne installieren möchtest, das wäre bei dir Visual Studio 9.0 mit den entsprechenden Varianten bzgl. Threads, Debug/Release und Linking (im Zweifel kannst du einfach alle installieren 😉 ).

    Im nächsten Dialog gehts dann an die einzelnen Bibliotheken, die du installieren möchtest und die nicht nur aus Headern bestehen. Auch hier würde ich dir empfehlen, einfach alle Bibliotheken zu installieren, zum einen wegen eventuellen Abhängigkeiten, zum anderen weiß man, wenn man neu bei Boost ist, nicht, welche Bibliotheken man übermorgen benutzen möchte, weil sie so praktisch sind. Hierbei würde ich dann aber bei den einzelnen Bibliotheken auch jeweils nur für VS 9.0 installieren. Dann musst du nur noch das Zielverzeichnis wählen und bist dann fertig.

    Ich hatte schon Probleme mit dem Installer bei einer 384kbit-Internetleitung, weil dann einzelne Dateien einfach zu groß waren, um sie im gegebenen Zeitfenster runterzuladen, bevor man für tot erklärt wird. Sonst hatte ich aber noch nie Probleme.



  • ok und wie bindest du sie dann in dein Projekt ein?



  • Setze die Umgebungsvariable "boost" auf deinen Boost-Ordner. Dann im Visual Studio Rechtsklick auf das Projekt -> Eigenschaften:

    1. -> C/C++ -> Zusätzliche Includeverzeichnisse: $(boost)
    2. -> Linker -> Zusätzliche Bibliotheksverzeichnisse: $(boost)/lib


  • es klappt immer noch nicht, ich fühle mich mittlerweile leicht dumm 😞

    ok include verzeichnis: C:\Programme\boost\boost_1_42\boost
    bibverzeichnis: C:\Programme\boost\boost_1_42\lib

    Fehlermeldung: fatal error C1083: Datei (Include) kann nicht geöffnet werden: "boost/thread.hpp": No such file or directory



  • Include-Verzeichnis: C:\Programme\boost\boost_1_42\



  • danke jetzt klappt es 🙂 z.m. das Compilieren 😃 danke :schland: :schland:


Log in to reply