【问题标题】:Threads in Eclipse AND c++11Eclipse 和 c++11 中的线程
【发布时间】:2014-04-26 15:01:30
【问题描述】:

我的目标是创建多线程程序,我什至无法获得一个简单的线程 执行 ON ECLIPSE CDT。我的工具: 日食 3.8.1 CDT Ubuntu 13.10

我注意到我的问题非常相似。我已经尝试过其他解决方案,但我无法让它们为我工作。

当我在 Eclipse CDT 中键入代码时,Eclipse 不会“解析”符号“线程”,但是,它可以找到头文件“线程”。 'Mutex' 也无法解析。此外,构建后,我运行程序,eclipse返回:

"在抛出 'std::system_error' 的实例后调用终止 what(): 启用多线程以使用 std::thread: Operation not allowed"

一些补充说明:

我可以使用以下命令在终端中编译和执行代码: '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;
}

【问题讨论】:

    标签: eclipse multithreading c++11


    【解决方案1】:

    我一直在努力解决同样的问题,我终于解决了。这是我所做的:

    1) 为 c++ 构建添加 -std=c++11。为此,请右键单击您的项目,选择属性,然后:C/C++ Build -&gt; Settings -&gt; GCC C++ Compiler -&gt; Miscellaneous(last option)

    在其他标志中附加-std=c++11。我的其他标志现在看起来像:-c -fmessage-length=0 -std=c++11 但你的可能有点不同。

    2) 添加一些链接器选项。在与上面相同的视图(C/C++ Build -> Settings)中,选择 GCC C++ Linker 选项,然后从那里转到 Miscellaneous(倒数第二个选项)。添加以下链接器标志(该字段对我来说是空的):-Wl,--no-as-needed -pthread。点击应用。

    3) 添加宏。再次从项目属性菜单(项目->右键单击->属性)。导航到C/C++ General -&gt; Paths and symbols -&gt; Symbols。选择GNU C++。添加名称为 __GXX_EXPERIMENTAL_CXX0X__ 且没有值的符号。再次点击应用。

    4) 导航到C/C++ General -&gt; 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-&gt;Index-&gt;Rebuild

    按照这些步骤,我能够编译一个 c++11 多线程程序并执行它,而且 Eclipse CDT 也没有报告任何错误,并且对自动完成很有帮助。不幸的是,这个设置必须单独为 Release 和 Debug 完成(或者至少我还没有找到分享它的方法)。希望这可以帮助。

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 2014-04-06
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      相关资源
      最近更新 更多