Linker fehler bei boost::thread



  • Mal davon abgesehen, das das selber Bauen der Boost Libs nicht wirklich schwer ist. Da braucht man eigentlich keinen spezielle Installer. Aber die erste Aktion wäre halt, mal schauen ob die gesuchte Datei überhaupt da ist.



  • Janjan schrieb:

    Wär mir neu, dass die Thread-Library von Boost bei Boostpro dabei ist.

    Also, ich hab in C:\* danach gesucht, nicht gefunden. Woher krieg ich das zeug den dann ?



  • lk schrieb:

    Also, ich hab in C:\* danach gesucht, nicht gefunden.

    Schön das du endlich gemerkt hast, das die Datei nicht vorhanden ist. Aber das gesamte C:-Laufwerk absuchen zu lassen, ist unnötig, wenn der Linker nur in dem von dir angegebenen Libs-Verzeichnis sucht.

    lk schrieb:

    Woher krieg ich das zeug den dann ?

    In dem du die Dateien mit bjam baust. Siehe Getting Started Anleitung von Boost. Ist aber nicht so schwer, wie es sich zu erst liest.
    Die Boost-Truppe kann nämlich schlecht für jeden Compiler auf jeder Plattform die Binary Libs bereit stellen, da es Gigabyte Daten wären. Muß deshalb selber bauen.



  • Artchi schrieb:

    lk schrieb:

    Also, ich hab in C:\* danach gesucht, nicht gefunden.

    Schön das du endlich gemerkt hast, das die Datei nicht vorhanden ist. Aber das gesamte C:-Laufwerk absuchen zu lassen, ist unnötig, wenn der Linker nur in dem von dir angegebenen Libs-Verzeichnis sucht.

    Geht schnell, mit nur 11gb von 30gb benutzt *lach* :p



  • Okay, habe doch noch probleme...
    Die libs sind compiliert (via bjam.exe... 2h o.o) (unter C:\b\), bloß nach dem compilieren weis ich nicht was weiter. Ich habe auch schon gegooglet.

    Ich habe Visual C++ 2010 Express Edition. Und die Compilierten boost libs v1.43.

    Irgendwie ist alles verkehrt... Ich habe auch keine Ahnung wie ich das erklären soll... einfach verdreht.
    Ich würde auch überhaupt nicht gerne nochmal zwei stunden verbringen, irgendetwas anderes zu compilieren...

    Hab ich was falsh gemacht? Hat sich was in den 1.43 libs was geändert? Könnte mir jemand bitte ganz genaue anweisungen geben, was ich machen soll?



  • Die libs sind compiliert (via bjam.exe... 2h o.o) (unter C:\b\), bloß nach dem compilieren weis ich nicht was weiter.

    Kannst du mal bitte vernünftige deutsche Sätze schreiben, wenn Du hier Hilfe und Mühe von den anderen erwartest? Man versteht nur die Hälfte!

    Ist jetzt die gewünschte Lib vorhanden oder nicht? darum ging es doch schließlich die ganze Zeit, oder nicht?

    Aber ich will mal nicht so sein. Schau mal hier.



  • Okay, von neu compiliert. Diesmal nur 40min. Die datei libboost_thread-vc100-mt-gd-1_43.lib giebt es in C:\boost_1_43_0\ ürberhaupt nicht (beim ersten mal gab es sie).
    Vieleicht hat das was hiermit zu tun?:

    bjam.exe output schrieb:

    ln-NT C:\Boost\lib\libboost_thread-vc100-mt.lib
    "NT symlinks not supported yet, making copy"
    1 file(s) copied.

    Also, ich muss sagen, dass es gar kein 'Include' Verzeichnis giebt. Das verzeichnis 'lib' giebt es auch nicht (sondern 'libs').

    (Die datei 'libboost_thread-vc100-mt.lib' konnte auch nicht gefunden werden)



  • Also... ?



  • Also ich habe immer folgendes Kommando für meine thread-only Umgebung benutzt:

    bjam.exe install -q --with-system --with-thread variant=release link=static threading=multi runtime-link=static
    

    Das baut die beiden Libraries system und thread (die du zum multithreading brauchst) und installiert sie unter C:\Boost\lib und kopiert die include-files nach C:\Boost\include\boost.

    Wenn du mehr libraries als system und thread brauchst dementsprechend ein --with-xyz in obigem Kommando ergänzen.

    Dann fügst du C:\Boost\include in den Include-Suchpfad deines Kompilers (damit du mit #include <boost/thread.hpp> inkluden kannst), und C:\Boost\lib fügst du in den library-suchpfad deines Linkers ein.

    Dann kompilierst du dein Geraffel mit gesetztem -DBOOST_ALL_NO_LIB (um das automatische Linking zu unterdrücken) und sagst deinem Linker explizit, welche Datei er linken soll.

    Im Falle von msvc mit link also
    /LIBPATH:C:/Boost/lib C:/Boost/lib\libboost_thread.lib

    (dein library dateiname wird länger sein, da du wahrscheinlich im tagged oder versioned layout baust)

    Viel Erfolg!



  • Die entsprechenden Libraries sind übrigens auch im BoostPro-Installer dabei, du musst sie nur auswählen.


Anmelden zum Antworten