2012-12-23 75 views
11

對於一個小型學校項目,我需要創建一個簡單的客戶端/服務器結構,它將在路由器上運行(使用openWRT),並且我正在嘗試在此應用程序中使用線程。XCode std :: thread C++

我的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),我收到以下錯誤:

Attempt to use an deleted function

它顯示的一些代碼:

__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)

  • 在爲您的項目生成設置選項卡,向下滾動到「蘋果LLVM編譯器4.1 - 語言」
  • 將設置「C++語言方言」到「 C++ 11 [-std = C++ 11]」
  • 設置設置 「C++標準庫」 到 「的libC++(標準LLVM C++與C++ 11支持庫)」

但那些設置已經設置的地方。

是否有任何標誌/庫或我失蹤的東西?

+1

您認爲您將在嵌入式平臺上獲得C++ STD嗎?再想一想。 – Linuxios

+0

我不知道,OpenWRT是一個基於linux的系統。所以我想它會在那裏? – Matthijn

+4

好吧,幾乎肯定會是C STD,但C++對於路由器來說可能有點密集。如果你需要線程並且C++不能工作,那就去Linux的'pthread'。另外,爲什麼您要在LLVM上的Xcode上開發Linux?你需要GCC和一些交叉編譯。 – Linuxios

回答

2

在XCode中使用G ++代替LLVM。不要忘記在編譯器構建設置中鏈接線程庫(-lpthread - 或-pthread,-lrt)。並計算Win/Mac/Linux操作系統中線程行爲的差異(儘管它是POSIX)

相關問題