【问题标题】:XCode std::thread C++XCode std::thread C++
【发布时间】:2012-12-23 15:00:30
【问题描述】:

对于一个学校的小项目,我需要创建一个简单的客户端/服务器结构,它将在路由器(使用 openWRT)上运行,并且我正在尝试使用此应用程序中的线程做一些事情。

我的 C++ 技能非常有限,所以我在 internet 上找到了这个作为基本示例。

#include <thread>
#include <iostream>

void doSomeWork( void )
{
    std::cout << "hello from thread..." << std::endl;
    return;
}

int main( int argc, char *argv[] )
{
    std::thread t( doSomeWork );
    t.join();
    return 0;
}

当我尝试在 Xcode (4.5.2) 中运行它时,我收到以下错误:

尝试使用已删除的函数

它显示了一些代码:

__threaad_execute(tuple<_Fp, _Args...>& __t, __tuple_indices<_Indices...>)
{
    __invoke(_VSTD::move(_VSTD::get<0>(__t)), _VSTD::move(_VSTD::get<_Indices>(__t))...);
}

我想我需要对“构建设置”或“链接库”或其他东西做些什么?但我不太确定该怎么做。我想我可能需要设置以下设置(which i found here)

  • 在项目的“构建设置”选项卡中,向下滚动到“Apple LLVM Compiler 4.1 - 语言”
  • 将设置“C++ 语言方言”设置为“C++11 [-std=c++11]”
  • 将设置“C++ 标准库”设置为“libc++(支持 C++11 的 LLVM 标准 C++ 库)”

但是那些已经设置好的设置。

是否有任何标志/库或我缺少的东西?

【问题讨论】:

  • 您认为您会在嵌入式平台上获得 C++ STD?再想想。
  • 我不知道,OpenWRT是一个基于linux的系统。所以我猜它会在那里?
  • 嗯,几乎肯定会有 C STD,但 C++ 的 STD 对于路由器来说可能有点密集。如果您需要线程并且 C++ 不起作用,请使用 Linux 的 pthread。另外,您为什么要在 LLVM 上的 Xcode 中为 Linux 开发?你需要 GCC 和一些交叉编译。
  • 编码在Xcode中完成,实际编译确实是通过交叉编译完成的。我去看看 pthread。
  • 查看 tinythreadpp.bitsnbites.eu 它是 c++11 线程的替代品。

标签: c++ xcode multithreading


【解决方案1】:

在 XCode 中使用 G++ 而不是 LLVM。不要忘记在编译器构建设置中链接线程库(-lpthread - 或 -pthread、-lrt)。并计算跨 Win/Mac/Linux 操作系统的线程行为差异(尽管是 POSIX)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2020-12-21
    相关资源
    最近更新 更多