'thread' is not a member of 'std'
-
Hiho,
wollte mal ganz nebenbei kurz threads anschaun' und was seh ich?
#include <iostream> #include <thread> int main() { auto Hello([]() ->void {for(;;)std::cout << "Hello ";}); auto World([]() ->void {for(;;)std::cout << "World!";}); std::thread a(Hello), b(World); a.join(); b.join(); }
Compiliert mit dem C++11-flag.
Hauptsächlicher Fehler: thread ist nicht im std-namespace!
Mein Compiler ist GCC 4.6.1 .
Ich hab schon ähnliche Sachen im Netz gefunden, die helfen mir jedoch irgendwie nicht weiter.VD im VR
-
Mal abgesehen davon, dass ich deinen Fehler gerade nicht kenne, kannst du deinen Code vereinfachen...
#include <iostream> #include <thread> int main() { std::thread a([]{ for(;;) std::cout << "Hello "; }); std::thread b([]{ for(;;) std::cout << "World!"; }); a.join(); b.join(); }
-
314159265358979 schrieb:
Mal abgesehen davon, dass ich deinen Fehler gerade nicht kenne, kannst du deinen Code vereinfachen...
#include <iostream> #include <thread> int main() { std::thread a([]{ for(;;) std::cout << "Hello "; }); std::thread b([]{ for(;;) std::cout << "World!"; }); a.join(); b.join(); }
Stimmt, danke. Man bekommt was man verdient.
-
Bei mir (GCC 4.6.2) compiliert es, aber beim Ausführen bekomme ich einen Fehler:
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted
EDIT: Oh, der Fehler kommt wenn man pthread nicht linkt ... Sollte man da nicht eigentlich einen Linkererror bekommen? Jetzt funktioniert es auf jeden Fall.
-
pyhax schrieb:
Bei mir (GCC 4.6.2) compiliert es, aber beim Ausführen bekomme ich einen Fehler:
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted
EDIT: Oh, der Fehler kommt wenn man pthread nicht linkt ... Sollte man da nicht eigentlich einen Linkererror bekommen? Jetzt funktioniert es auf jeden Fall.
Nein, ich bekomm einen Compiler-error. Welche Flags hast du?
-
g++ ./threads.cpp -Wall -Wextra -pedantic -othreads -std=c++0x -g -lpthread
GCC 4.6.2 hat noch kein -std=c++11
-
Dankeschön. Jetzt versuch ich es mit Boost.thread und es klappt genauso wenig:
Linker-errors:
undefined reference to `_imp___ZN5boost6thread12start_threadEv' undefined reference to `_imp___ZN5boost6thread12start_threadEv' undefined reference to `_imp___ZN5boost6thread4joinEv' undefined reference to `_imp___ZN5boost6thread4joinEv' undefined reference to `_imp___ZN5boost6threadD1Ev' undefined reference to `_imp___ZN5boost6threadD1Ev' undefined reference to `_imp___ZN5boost6threadD1Ev' undefined reference to `_imp___ZN5boost6threadD1Ev'
'S nervt, ehrlich. Ich linke doch die system- und thread-libs, was denn noch?
-
Upsi, sorry! Hab ganz vergessen, BOOST_THREAD_USE_LIB zu definieren bevor ich den Header einbinde. Jetzt klappt alles wunderbar. Schönes Wochenende!
-
Na, lies doch mal die Namen. Welche Bibliothek wird da wohl fehlen?
edit: Da warst du selber schneller als ich.
-
SeppJ schrieb:
Na, lies doch mal die Namen. Welche Bibliothek wird da wohl fehlen?
Wie meinst du das?
Ich hab jetzt
libboost_system-mgw46-mt-1_48.a libboost_thread-mgw46-mt-1_48.a
gelinkt. Wenn ich das oben genannte Makro definiere, klappt alles wunderbar...?