2010-08-05 189 views
15

我通過MinGW在Windows上通過Eclipse IDE(如果有的話)使用GCC 4.5.0。我正在使用-std=c++0x標誌。在命名空間中找不到GCC std :: thread std

我發現_GLIBCXX_HAS_GTHREADS仍然沒有定義,所以thread對我而言仍然不是名稱空間std的成員。 - 或者也許是別的。

如何使用GCC獲得C++ 11線程支持?

P.S.它不識別-pthread標誌。我在這個網站的其他地方讀到一個問題,這個問題很有用。

編輯:笨笨:pthread是一個圖書館,而不是一個選項。它已安裝,gcc可以找到標題,但仍然沒有雪茄。

+0

您正在添加'',對吧? – 2010-08-05 13:11:47

+0

是的,我還發現了那個宏? 編輯:再次檢查。我絕對包括它。它仍然抱怨「線程」不是std的成員。 – defube 2010-08-05 13:13:19

+0

請參閱[答案](http://stackoverflow.com/a/5931181/723845) – Loom 2013-01-18 21:31:31

回答

10

Linux上正常工作(g++ -std=c++0x -lpthread沒有額外的定義)。

但是,this thread on Cygwin mailing list表明,至少從4.4開始,在構建libstdC++時,_GLIBCXX_HAS_GTHREADS被autoconf測試禁用,因爲cygwin的pthread實現缺少pthread_mutex_timedlock。也許MinGW也有同樣的問題。

另外,this thread on comp.lang.c++.moderated說同樣的事情。不受圖書館的支持。

3

如何使用GCC獲得C++ 0x線程支持?

使用Boost?嚴重的http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html聲稱線程是不完整的,即使在主線頭,所以它不會在任何當前版本。

+0

是的,我知道有關提升,我不介意使用它。我也知道gcc對C++ 0x的支持目前是實驗性的。我只是好奇,爲什麼它不適用於我的顯然老版本(我已經嘗試過,並最終得到相同的消息)。 – defube 2010-08-05 13:56:39

2

gcc的本機Windows版本不支持新的C++ 0x/C++ 11線程庫。

(商業)Just::Thread庫增加了對gcc 4.5.2 for Windows以及MSVC的TDM端口的支持。

+0

你錯了;) – niXman 2011-12-03 11:56:07