Miałem też kilka problemów (Ubuntu 13.04 64-bit, g ++ - 4.8, eclipse Juno 3.8.1, CDT 6.0.0). Wiele rzeczy wspomniano powyżej, przepraszam, że je powtarzam, ale dodatkowo miałem problemy z wykorzystaniem
std::thread
jako część c ++ 11 (dodanie -pthread dla linkera rozwiązuje ten problem). W końcu te ustawienia działały dobrze:
Projekt -> Właściwości -> Kompilacja C / C ++ -> Ustawienia -> Różne. Dodaj
-std=c++11
flaga dla kompilatorów GCC i G ++. Kliknij Zastosuj.
Dla linkera, to samo okno, Różne, Flagi Linkera, dodano
-pthread
flaga. Ustawienia biblioteki współużytkowanej, Nazwa obiektu współużytkowanego, dodaj
-Wl,--no-as-needed
flaga też. Kliknij Zastosuj.
C / C ++ Ogólne -> Ścieżki i symbole -> Symbole TAB, zaznaczono GNU C ++, Dodaj
__GXX_EXPERIMENTAL_CXX0X__
(bez wartości)
flaga. Kliknij Zastosuj.
C / C ++ Ogólne -> Preprocesor Uwzględnij ścieżki .. -> Karta Dostawcy: sprawdź
CDT GCC Ustawienia wbudowanego kompilatora
i w „Poleceniu pobrania specyfikacji kompilatora”, dodaj
-std=c++11
flaga. Odznacz Udostępnij. Kliknij Zastosuj.
CDT zarządza wpisami ustawień kompilacji, sprawdź to również. Odznacz pozostałe dwa. Kliknij Zastosuj.
Wracając do zakładki Wpisy, GNU C ++ CDT Zarządza Wpisami ustawień kompilacji, powinieneś teraz zobaczyć dodane
__GXX_EXPERIMENTAL_CXX0X__
wejście.
Otóż to. Podczas pisania pisz na maszynie
std::
może teraz automatycznie uzupełniać klasę wątków, kompilacje powinny działać poprawnie i nie powinno być
std::system_error'what(): Enable multithreading to use std::thread: Operation not permitted
W czasie wykonywania.
std::unique_ptr<char[]>