000
09.03.2011, 20:59 Uhr
Subsurf
|
Hallo allerseits,
ich möchte in einem meiner Projekte Multi-Threading nutzen und habe mich dazu zu boost::thread aus der boost-Library entschieden.
Ich nutze CodeBlocks mit MinGW (neuste Version erst vorgestern mit diesem Webinstaller installiert) unter Win7 Prof 32bit.
Leider bin ich mit boost noch nicht so ganz warm geworden. Allein das Erstellen der Link-Libraries aus dem Sourccode hat mich einige Tage gekostet, weil es anfangs nicht funktionieren wollte. Das hat jedoch nun funktioniert und ich habe meine *.a-Dateien und natürlich die includes.
Nun habe ich folgenden Code aus einem Tutorial in einem neuen Projekt in die main.cpp eingefügt...
C++: |
//main.cpp #include <iostream> #include <boost/thread.hpp> #include <boost/date_time.hpp>
void workerFunc() { boost::posix_time::seconds workTime(3);
std::cout << "Worker: running" << std::endl;
// Pretend to do something useful... boost::this_thread::sleep(workTime);
std::cout << "Worker: finished" << std::endl; }
int main(int argc, char* argv[]) { std::cout << "main: startup" << std::endl;
boost::thread workerThread(workerFunc);
std::cout << "main: waiting for thread" << std::endl;
workerThread.join();
std::cout << "main: done" << std::endl;
return 0; }
|
...und natürlich mein boost-include-Verzeichnis zu den Compiler-Suchverzeichnissen hinzugefügt, selbiges gilt für mein Verzeichnis mit den Libraries für den Linker. Als zusätzliche Link-Library habe ich je nach Konfiguration (Debug oder Release) "libboost_thread-mgw45-mt-d-1_46.a" bzw. "libboost_thread-mgw45-mt-1_46.a" in den Linker-Settings eingetragen.
Kompilieren tut das Ganze wunderbar, doch beim Linken wirft mir CodeBlocks folgende Fehlermeldungen an den Kopf:
Zitat: |
||=== BoostTest, Debug ===| obj\Debug\main.o||In function `main':| L:\C++\BoostTest\main.cpp|25|undefined reference to `_imp___ZN5boost6thread4joinEv'| L:\C++\BoostTest\main.cpp|21|undefined reference to `_imp___ZN5boost6threadD1Ev'| L:\C++\BoostTest\main.cpp|21|undefined reference to `_imp___ZN5boost6threadD1Ev'| obj\Debug\main.o:L:\C++\BoostTest\..\boost\include\boost-1_46\boost\thread\win32\thread_data.hpp|161|undefined reference to `_imp___ZN5boost11this_thread18interruptible_waitEPvNS_6detail7timeoutE'| obj\Debug\main.o||In function `thread<void (*)()>':| L:\C++\BoostTest\..\boost\include\boost-1_46\boost\thread\detail\thread.hpp|204|undefined reference to `_imp___ZN5boost6thread12start_threadEv'| ||=== Build finished: 5 errors, 0 warnings (0 minutes, 3 seconds) ===|
|
Sieht für mich schwer nach einer fehlden Lib aus, aber da in keinem der boost-Tutorials, die ich bisher gefunden habe, behandelt wird, welche Libs ich wann einbinden muss, bin ich völlig ratlos was fehlen könnte Die Fehler treten auch auf, wenn ich die Datei manuell aus der Konsole heraus erstellen will. Scheint also nicht an meinen Einstellungen in CodeBlocks zu liegen. :( Dieser Post wurde am 09.03.2011 um 21:00 Uhr von Subsurf editiert. |