![](/img/trans.png)
[英]std::thread is not a member of namespace std using Eclipse Kepler MinGW
[英]'thread' is not a member of 'std' in Eclipse Neon with MinGW 6.3 GCC on Windows
我收到错误“线程不是std的成员”。 我已经尝试了所有在网上找到的解决方案,但到目前为止都没有奏效。 我尝试将-pthread和--std = c ++ 11添加到编译器和链接器选项以及编译器规范,以及将语言标准设置为ISO C ++ 11。 我正在将Eclipse neon.3与minGW 6.3.0-1一起使用,并且我已经更新了所有软件包。
该代码可以运行,但是如果可能的话,我想摆脱该错误。 (编辑:我不正确。尽管出现错误,当我选择“继续启动”时,它正在运行的代码是在我使用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开关。 我在您的文本中注意到,您仅在开关前加了一个破折号,这可能是您的问题吗? 尝试两个破折号。
我在这里转载:
编辑:顺便说一句,在您的评论中您说:
当我运行它时,它通知我错误存在,我选择“继续启动”
这是先前编译的结果,它不仅在继续并且忽略了错误。
在sbabbi的建议下,“ Mingw32不支持std :: thread。...您可以切换到mingw64 + winpthread(但TLS在该配置中被完全破坏)或使用Boost.thread。”,我决定设置Boost。并改用它。 我也切换到cygwin是因为它内置了Boost库,而我切换到了Netbeans是因为在月食中安装Boost本身证明是不必要的困难。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.