Das Folgende ist mein 1. Multithread-Programm. Aber während es kompiliert wurde, gibt es einen Verknüpfungsfehler. Der Teil der Fehlermeldung:
std::thread::thread<void (&)(int), int&>(void (&)(int), int&):
test.cpp (.text._ZNSt6threadC2IRFviEJRiEEEOT_DpOT0_[_ZNSt6threadC5IRFviEJRiEEEOT_DpOT0_]+0x33): undefined reference pthread_create
collect2: error ld return 1
#include<thread>
void f(int i) {}
int main() {
std::thread t(f, 1);
t.join();
return 0;
}
Akzeptierte Antwort:
Sie müssen mit -pthread
kompilieren als Kompilieroption.
Ich habe Ihren Code zum Kompilieren bekommen (obwohl ich die -Wall
hinzugefügt habe Funktion, um mir alle Warnhinweise zu geben):
g++ -pthread -out foo.exe foo.cpp
(wobei foo.cpp
war der von mir verwendete Eingabedateiname mit Ihrem Code)