boost::thread t(thread)
-
Hallo ich bin recht neu in C++ und muss leider schon recht hart einsteigen.
Wenn ich nun dieses Threadbeispiel teste bekomme ich folgenden Fehler.
Kann mir jemand sagen woran das liegt?/* #define BOOST_THREAD_USE_LIB #include <boost/thread.hpp> #include <iostream> void wait(int seconds) { std::cout <<" ich warte" <<std::endl; } void thread() { for (int i = 0; i < 5; ++i) { wait(1); std::cout << i << std::endl; } } int main() { boost::thread t(thread); t.join(); }C:\Users\Viktor Gottfried\workspace\startThread1\Debug/../src/startThread.cpp:32: undefined reference to `boost::thread::join()' C:\Users\Viktor Gottfried\workspace\startThread1\Debug/../src/startThread.cpp:31: undefined reference to `boost::thread::~thread()' C:\Users\Viktor Gottfried\workspace\startThread1\Debug/../src/startThread.cpp:31: undefined reference to `boost::thread::~thread()' src\startThread.o: In function `thread<void (*)()>': c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../include/boost/thread/detail/thread.hpp:204: undefined reference to `boost::thread::start_thread()' collect2: ld returned 1 exit status
-
Du musst die Boost-Threadbibliothek dazu linken. Aus den Fehlermeldungen nehme ich mal an, dass du GCC benutzt, da machst du dann auf der Kommandozeile etwas ähnliches wie:
g++ -Wall -Wextra beispiel.cpp -lboost_thread -o beispielDas -lbibliothek bindet eine Bibliothek ein. Achte auf die Reihenfolge. Dateien, die von anderen Dateien genutzt werden, müssen hinter diesen stehen. Hier nutzt dein Beispiel Funktionen aus der libboost_thread, also muss dein Beispielcode weiter vorne stehen.
Wenn du eine IDE benutzt, dann übernimmt die das auch bestimmt alles für dich, du musst ihr nur beibringen, welche Bibliotheken sie dazu linken soll. Wie das genau geht, kommt auf die IDE an.
-
Genau ich nutze GCC und als IDE benutze ich Eclipse.
Aber dort kann ich unter den Buildsettings
Propoerties-->C/C++ Build-->Settings-->Tool Settings-->MinGW C++ Linker
keine Angaben machen.Oder muss ich das über Libraries machen? Librarie-search Path oder die Librarie direkt angeben?
C:\boost-libs\boost\bin.v2\libs\thread\build\gcc-mingw-4.5.2\release\link-static\threading-multi
funzt nicht!
Thx und MfG
EDIT:
Habe nun zu den Libraries folgendes hinzugefügt:
boost_thread-mgw45-mt-1_48
pthreadDann erstellt Eclipse mir eine Exe und Kompiliert alles, aber wenn ich das Prgramm ausführen möchte kommmt:
Nothing to build for startThread1
Error starting process. Cannot run program "C:\Users\Viktor Gottfried\workspace\startThread1\Debug\startThread1.exe": Launching failed Cannot run program "C:\Users\Viktor Gottfried\workspace\startThread1\Debug\startThread1.exe": Launching failed Cannot run program "C:\Users\Viktor Gottfried\workspace\startThread1\Debug\startThread1.exe": Launching failed