C++ BOOST Problem beim Einbinden



  • Hallo,

    bitte nicht mit HowTos und Links um euch werfen, ich habe mir viele Links bereits durch gelesen und denke, dass ich das grundlegende Prinzip gerafft habe.

    Was ich bisher habe:

    Eine kompilierte Version von Boost 1.45. Mit BJAM erstellt mithilfe folgender Parameter: bjam.exe --toolset=gcc --build-type=complete

    Ich benutze Mingw + CodeBlocks.

    Nach etwa 15 - 20 min roedeln gibt die Konsole aus: Boost successfully compiled,... oder sowas in der Art 😉

    Man sollte also meinen, dass der Compilevorgang erfolgreich war.

    Bei CodeBlocks fuege ich nun den Pfad der Headerdateien bei
    "Search Directories"/"Compiler" ein, sowohl fuer Debug als auch fuer Release.

    C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0 z.B.

    Bei CodeBlocks klappt auch boost::thread z.B. und CodeBlocks erkennt das auch alles.

    Nun muss ja nur noch die statische Lib gelintk werden... Sollte man meinen!

    Gesagt, getan! Also unter "Search Directories"/"Linker" schnell das hier eingetragen : C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0\stage\lib.

    So, nun noch schnell bei "Linker Settings" z.B. die Lib "libboost_thread-mgw44-mt-1_45" eingetragen.

    Die letzten beiden Schritte natuerlich fuer Debug und Release!

    So.

    Das solllte es doch gewesen sein, oder lieg ich da falsch ??

    Mein simpler Testcode:

    #include <iostream>
    #include <boost/thread.hpp>
    
    using namespace std;
    
    void thread1()
    {
    
    }
    
    int main()
    {
        boost::thread t (thread1);
    
        cout << "Hello world!" << endl;
        return 0;
    }
    

    Machen tut der nix grosses, aber soweit komm ich auch garnicht...

    Compilefehler:

    -------------- Build: Debug in Boost Test ---------------

    Compiling: main.cpp
    In file included from C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0/boost/thread/win32/thread_data.hpp:12,
    from C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0/boost/thread/thread.hpp:15,
    from C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0/boost/thread.hpp:13,
    from C:\Users\Kr0e\Documents\C++ Projects\Boost Test\main.cpp:2:
    C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0/boost/thread/win32/thread_heap_alloc.hpp:59: warning: inline function 'void* boost::detail::allocate_raw_heap_memory(unsigned int)' declared as dllimport: attribute ignored
    C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0/boost/thread/win32/thread_heap_alloc.hpp:69: warning: inline function 'void boost::detail::free_raw_heap_memory(void*)' declared as dllimport: attribute ignored
    Linking console executable: bin\Debug\Boost Test.exe
    obj\Debug\main.o: In function main': C:/Users/Kr0e/Documents/C++ Projects/Boost Test/main.cpp:16: undefined reference to_imp___ZN5boost6threadD1Ev'
    C:/Users/Kr0e/Documents/C++ Projects/Boost Test/main.cpp:16: undefined reference to \_imp\_\_\_ZN5boost6threadD1Ev' obj\\Debug\\main.o: In functionthread<void (*)()>':
    C:/Users/Kr0e/Documents/BOOST_c++/boost_1_45_0/boost/thread/detail/thread.hpp:204: undefined reference to `_imp___ZN5boost6thread12start_threadEv'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 2 seconds)
    3 errors, 2 warnings

    Bei genauerem Hinsehen sieht man drei Mal "undefined reference to".

    WARUM ???

    Ich versuche seit mehreren Tagen das iwie ans Laufen zu kriegen, lese in iwelchen Foren wie einfach das doch sei und frage mich wieso ich das auf Teufel komm raus einfach nicht zum laufen kriege!

    Ist vlt. die Version 1.45 von Boost kaputt oder sowas ???

    naja, sorry wenn cih einen frustrierten Eindruck mache, is nix gegen Boost bin nur etwas verzweifelt 😉

    Gruss,

    Chris



  • Die Fehlermeldung

    C:\Users\Kr0e\Documents\BOOST_c++\boost_1_45_0/boost/thread/win32/thread_heap_alloc.hpp:59: warning: inline function 'void* boost::detail::allocate_raw_heap_memory(unsigned int)' declared as dllimport: attribute ignored

    und die Aussage

    Nun muss ja nur noch die statische Lib gelintk werden... Sollte man meinen!

    deuten darauf hin, dass da was nicht zusammen passt. Bosst wird eigentlich eher als DLL benutzt, ich würde es mal mit den dynamischen Boostlibs probieren.



  • Wenn du keine Lust hast, irgendwas selbst zu machen, empfehle ich dir einfach das hier zu benutzen: installboost.exe auswählen!.



  • Hallo Zusammen,

    nachdem ich nun eine Nacht drueber geschlafen hab (Suedhaldkugel), sieht die WElt auch shcon wieder besser aus.

    Danke fuer den Tipp mit der dll, genau das klappt jetzt.
    Wozu sind denn die ganzen anderen sachen da ?
    Also die ganzen *.a datein z.b. fuer boost:thread wenn ich nur die eine benutzen kann ?

    @Incocnito :

    Danke fuer den Tipp. Sowas haette ich vor der ganzen Sache (bevor ich die lib selbst compilere etc.) gebraucht... Aber nun gehts ja.
    Ausserdem habe ich ja lust das selbst zu machen, aber es frustriert einen wenn es tagelang nicht klappt, aber der Tipp mit der Dll war super, davin abgesehen hab ic hdas in keinem Tut gelesen, finde ich etwas missverstaendlich...
    Da steht ueberall nur was von statischen Libs und nix von dynamischen...

    Lange Rede kurzer Sinn.. Danke!

    Gruss,

    Chris


Anmelden zum Antworten