[英]std::thread works in cygwin but not in MinGw
所以我決定今天嘗試一下c ++。 我下載了MinGw及其隨附的g ++編譯器。 我決定測試以下代碼:
#include <iostream>
#include <thread>
int foo()
{
std::cout << "foo" << std::endl;
}
int main()
{
std::thread t1(foo);
t1.join();
std::cout << "done" << std::endl;
return 0;
}
然后,我嘗試使用以下行在命令行上對其進行編譯:
g++ -std=c++11 main.cpp
哪個適用於世界。 但是這次,它給了我這個錯誤:
error: 'thread' is not a member of 'std'
我使用cygwin提供的g ++嘗試了完全相同的代碼,並且可以正常工作。 那么,為什么它在MinGw中不起作用? 是過時的還是什么? 我想像在cygwin終端上一樣使用c ++ 11和c ++ 14編譯東西,但是在cygwin環境之外。
我在linux(交叉編譯)中對此進行了測試。
這樣可以編譯,
i686-w64-mingw32-g++-posix -std=c++11 threads.cpp -lwinpthread
這不
i686-w64-mingw32-g++-win32 -std=c++11 threads.cpp -lwinpthread
編譯器之間的區別是--enable-threads=win32
與構建編譯器時使用的--enable-threads=posix
選項。 g++ -v
應該顯示使用了什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.