我的目标是创建多线程程序,我甚至无法获得一个简单的线程 执行ON ECLIPSE CDT。我的工具: ECLIPSE 3.8.1 CDT Ubuntu 13.10
我注意到有关我的非常类似的问题。我尝试了其他解决方案,但我无法让它为我工作。
当我在Eclipse CDT中键入代码时,Eclipse不会“解析”符号'thread',但是,它可以找到头文件'thread'。 'Mutex'也没有解决。此外,在构建之后,我运行程序,eclipse返回:
“在抛出'std :: system_error'的实例后终止调用 what():启用多线程以使用std :: thread:不允许操作“
一些补充说明:
我可以使用以下命令在终端中编译和执行代码: 'clang ++ c.cpp -pthread -std = c ++ 11' 但... 'g ++ c.cpp -pthread -std = c ++ 11'编译和 产生与上面引用的相同的错误。所以它看起来像是一个编译器问题。我做到了 开始使用clang ++编译器在Eclipse CDT中的新项目中编写代码,现在提供相同的非解析“线程”并产生上面引用的错误。所以现在我认为我在Eclipse中设置了一些错误的设置,路径或标志。
include <iostream>
include <thread>
using namespace std;
void p1(){
cout<<"process 1 is processing"<<endl;
}
int main() {
thread t1(&p1);
cout<<"Hello from main()"<<endl;
t1.join();
return 0;
}
答案 0 :(得分:3)
我一直在努力解决同样的问题,我终于解决了。这是我做的:
1)为c ++ build添加-std = c ++ 11。要执行此操作,请右键单击项目,选择属性,然后:C/C++ Build -> Settings -> GCC C++ Compiler -> Miscellaneous(last option)
在其他标志中附加-std=c++11
。我的其他标志现在看起来像:-c -fmessage-length=0 -std=c++11
但你的可能有点不同。
2)添加一些链接器选项。在上面的相同视图(C / C ++ Build - &gt; Settings)中选择GCC C ++ Linker选项,然后转到Miscellaneous(从倒数到最后一个选项)。添加以下链接器标志(该字段对我来说是空的):-Wl,--no-as-needed -pthread
。点击申请。
3)添加一个宏。再次从项目属性菜单(项目 - &gt;右键单击 - &gt;属性)。导航至C/C++ General -> Paths and symbols -> Symbols
。选择GNU C++
。添加名称为__GXX_EXPERIMENTAL_CXX0X__
且没有值的符号。再次点击申请。
4)导航至C/C++ General -> Preprocessor Include paths.
。选择提供程序选项卡。在此标签中,只选中以下两个选项:CDT GCC Built-in Compiler Settings
和CDT Managed Build Setting Entries
。选择CDT GCC Built-in Compiler Settings
取消选中Share setting entries between projects(global provider)
复选框,现在应启用标有Command to get compiler specs
的文本框。在此文本框中附加好旧的-std=c++11
。对我来说,${COMMAND} -E -P -v -dD ${INPUTS} -std=c++11
现在看起来像这样。点击最后一次申请。
5)重建项目的索引。为此right click the project->Index->Rebuild
按照这些步骤,我能够编译一个c ++ 11多线程程序,执行它并且Eclipse CDT也没有报告任何错误,并且对自动完成有所帮助。不幸的是,这个设置必须单独为Release和Debug完成(或者至少我没有找到分享它的方法)。希望这可以帮助。