[英]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.