12

学校向けの小さなプロジェクトでは、ルーター (openWRT を使用) で実行される単純なクライアント/サーバー構造を作成する必要があり、このアプリケーションのスレッドで何かをしようとしています。

私の C++ スキルは非常に限られているため、基本的な例としてインターネットでこれを見つけました。

#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))...);
}

「ビルド設定」や「リンクライブラリ」などで何かをする必要があると思いますか?しかし、私は正確に何をすべきかよくわかりません。次の設定を設定する必要があるかもしれないと思いました(ここで見つけました)

  • プロジェクトの [ビルド設定] タブで、[Apple LLVM Compiler 4.1 - 言語] まで下にスクロールします。
  • 「C++ 言語方言」の設定を「C++11 [-std=c++11]」に設定します。
  • 「C++ 標準ライブラリ」の設定を「libc++ (C++11 をサポートする LLVM 標準 C++ ライブラリ)」に設定します。

しかし、それらの設定はすでに設定されています。

フラグ/ライブラリ、または不足しているものはありますか?

4

1 に答える 1

2

XCode で LLVM の代わりに G++ を使用します。コンパイラのビルド設定でスレッド ライブラリ (-lpthread または -pthread、-lrt) をリンクすることを忘れないでください。そして、Win/Mac/Linux OS でのスレッドの動作の違いを考慮してください (POSIX にもかかわらず)。

于 2013-05-28T13:28:22.967 に答える