2013-01-07 41 views
1

我嘗試了基本方案:如何爲C++ 11設置我的g ++編譯器?

// ThreadExample.cpp 
#include <string> 
#include <iostream> 
#include <thread> 
using namespace std; 

void task1(string msg) 
{ 
    cout << "task1 says: " << msg; 
} 

int main() 
{ 
    thread t1(task1, "Hello"); 
    t1.join(); 
} 

一個我實際上是在計算器中,但我嘗試使用它編譯:

g++ -std=c++0x -pthread ThreadExample.cpp -o ThreadExample -lm 

不過,我不斷收到一個錯誤,線程是未申報。我有適用於Windows的MinGW GNU版本4.7.1。有什麼我可以改變,所以我可以使用C++ 11?

+0

MinGW支持posix線程嗎? – Pubby

+0

也嘗試把-pthread放在g ++命令的末尾,順序事宜 – billz

+0

是的。將'C++ 0x'更改爲'C++ 11'以使用C++ 11。不過,我懷疑這與線程庫有什麼關係...... – leemes

回答

1

沒有人爲Mingw貢獻了<thread>,<mutex>等的實現,除非使用Mingw(通過第三方pthreads實現的(可選)Pthreads支持)。

我在http://gcc.gnu.org/ml/libstdc++/2012-05/msg00020.html與在Windows本地線程方面實現缺少的功能提出了一些建議啓動一個線程,但我沒有Windows機器和其他沒有人已經主動做什麼,什麼都沒有發生。我自己幾乎沒有興趣實現它,因爲我從來沒有爲Windows開發過,所以對我來說這些對我來說都沒有用,而且我寧願花有限的空閒時間來實現我將實際使用的東西。如果有人願意爲此工作,我會很樂意提醒他們,並檢查他們的代碼並幫助將其引入GCC。