gpt4 book ai didi

c++ - std::thread 在 cygwin 中有效,但在 MinGw 中无效

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:32 32 4
gpt4 key购买 nike

所以我决定今天尝试一下 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

适用于 hello world。然而这一次,它给了我这个错误:

错误:“thread”不是“std”的成员

我使用 cygwin 提供的 g++ 尝试了完全相同的代码,并且它有效。那么为什么它在 MinGw 中不起作用?它是过时的还是什么?我想像在 cygwin 终端上一样使用 c++11 和 c++14 编译东西,但在 cygwin 环境之外。

最佳答案

如果您想使用 std::thread,MinGW-w64(或者更确切地说是 Windows 上的 GCC)需要使用 posix 线程支持进行编译,大概您下载了带有原生 Windows 线程的构建。

查看针对 64 bit 的 mingw-builds 文件夹或 32 bit并选择一个带有 posix 线程的版本。您还需要选择异常处理方法,如果您没有理由选择其他方法,则坚持使用 GCC 默认值 seh(64 位)和 dwarf(32 位)。

关于c++ - std::thread 在 cygwin 中有效,但在 MinGw 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34847804/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com