所以我一直在尝试使用 MinGW 编译器让以下代码在 Windows 上编译和运行。
#include <iostream>
#include <thread>
void test()
{
std::cout << "test" << std::endl;
}
int main()
{
std::thread t(test);
}
我正在使用以下命令进行编译:
g++ -std=c++11 test.cpp -o test.exe
现在的问题是应该使用的 MinGW 版本,我已经尝试了所有我知道的版本。
- MinGW 构建:thread-win32
- MinGW 构建:thread-posix
- MinGW-w64:stdthread 实验性 rubenvb
- MinGW-w64:标准线程实验 rubenvb 4.7
数字 1 不起作用,因为 GCC显然只在内部支持 pthread 的东西。
编号 2 确实编译并且它基本上甚至输出test
(参见输出的最后一行),但它也因错误而崩溃:
terminate called without an active exception
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
test
3 号和 4 号再次编译,但它们不输出test
,而是立即崩溃,但输出更具描述性:
terminate called after throwing an instance of 'std::system_error'
what(): Enable multithreading to use std::thread: Operation not permitted
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
谷歌当然把我带到了GCC bug tracker和其他一些建议使用的帖子,-pthread
这根本没有帮助。
我也尝试过手动链接winpthread
and pthread
,但这也无济于事。
-std=c++11
和之间也没有区别-std=gnu++11
...
我现在真的很迷茫,不知道是否有可能获得支持 的 MinGW 版本,std::thread
但也许我只是忽略了一些编译器标志。我希望有人可以帮助我!