【问题标题】:Linux - setting Code::Blocks to compile multithreading C++ codeLinux - 设置 Code::Blocks 来编译多线程 C++ 代码
【发布时间】:2015-05-07 22:08:51
【问题描述】:

我已经搜索过这里的论坛,但对我的情况没有任何帮助。 我正在尝试在 Code::Blocks 13.12 中编写和编译一些 C++ 多线程代码,目前我拥有的唯一代码是:

#include <iostream>
#include <thread>

void cpp11()
{
    std::cout<<"C++11 MULTITHREADING\n";
}

int main()
{
    std::thread t(cpp11);
    t.join();
}

最初我无法编译和运行该代码(在 Code::Blocks 和终端中),因为我遇到了错误:

在抛出 'std::system_error' 的实例后调用终止 what(): 启用多线程以使用 std::thread: 操作不 允许。

我发现我能够像这样在终端中编译和运行调用 g++ 的代码:

g++ -std=c++11 -pthread main.cpp -o Program

但我不能在 Code::Blocks 中设置相同的值。 我去了 Project -> Build options,在 Compiler settings 选项卡中我选择了让 g++ 遵循 C++11 ISO C++ 语言标准 [-std=c ++11]。 在编译器设置 -> 其他选项中,我输入了 -pthread。 在 Linker settings -> Other linker options 我输入了 -pthread。 它不起作用,在我在 Code::Blocks 中构建并运行我的项目后,我收到相同的错误消息。

感谢您的帮助!

【问题讨论】:

  • 构建设置 -> 编译器设置中没有“高级选项”之类的内容。

标签: linux multithreading c++11 codeblocks


【解决方案1】:

按照此问题的说明进行操作

How do I link to a library with Code::Blocks?

在最后一步,当弹出添加库对话框时输入 pthread。

更新

再次转到构建选项 > 编译器设置。单击其他选项并键入 -pthread

【讨论】:

  • 我只是按照你的建议去做 - 它没有帮助。添加了 pthread 但仍然给我同样的错误。
  • @ikS11 可以将代码块运行的命令复制粘贴到这里吗?您可以在构建日志中看到它们。
  • 这里有构建和运行后构建日志的输出: 检查是否存在:/home/dawid/MyProject/bin/Debug/MyProject 执行:xterm -T MyProject -e /usr/bin/cb_console_runner LD_LIBRARY_PATH=$LD_LIBRARY_PATH:。 /home/dawid/MyProject/bin/Debug/MyProject(在 /home/dawid/MyProject/.)进程以状态 0 终止(0 分钟,2 秒)
  • 嗯,发生了一些有趣的事情......我按照你的建议更改了设置,但我没有更改代码中的任何内容,所以代码不是从一开始就构建的......工作得很好现在重建后,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
相关资源
最近更新 更多