'thread' 不是 Windows 上带有 MinGW 6.3 GCC 的 Eclipse Neon 中 'std' 的成员

'thread' is not a member of 'std' in Eclipse Neon with MinGW 6.3 GCC on Windows

我收到错误 "thread is not a member of std"。我已经尝试了我在网上找到的所有解决方案并且 none 到目前为止都有效。我尝试将 -pthread 和 --std=c++11 添加到编译器和链接器选项以及编译器规范,并将语言标准设置为 ISO C++11。我将 Eclipse neon.3 与 minGW 6.3.0-1 一起使用,并且我已经更新了我的所有包。

代码确实 运行,但我想尽可能消除错误。 (编辑:我错了。尽管有错误,当我选择 "Proceed with Launch" 时,它是 运行ning 在我使用 std::thread 之前编译的代码。当前代码没有得到 运行.)

我需要不同版本的 mingw 吗?我应该切换到 mingw-w64 吗?

这是我的工具链,供参考:

GCC 汇编程序

GCC 归档程序

GCC C++ 编译器

GCC C 编译器

MinGW C 链接器

MinGW C++ 链接器

以及给出此错误的简单代码:

#include <thread>
#include <iostream>

void call_from_thread() {
    std::cout << "Hello!" << std::endl;
}

int main() {
    std::thread t1(call_from_thread);
    return 0;
}

我可以使用您的示例代码重现该错误的唯一方法是不包含 --std=c++11 开关。我在你的文字中注意到你只在开关前放了一个破折号,这可能是你的问题吗?尝试两个破折号。

我在这里转载:

https://godbolt.org/g/GQFTc9

编辑:顺便说一句,在您的评论中您说:

When I run it, it notifies me that errors exist and I choose "proceed with launch"

这是运行前一次编译的结果,不是继续而忽略错误。

在 sbabbi "Mingw32 does not support std::thread. ...You can switch to mingw64+winpthread (but TLS is utterly broken in that config) or use Boost.thread." 的建议下,我决定设置并使用 Boost。我还切换到 cygwin,因为它内置了 Boost 库,我切换到 Netbeans,因为事实证明在 eclipse 中安装 Boost 本身非常困难。