2013-07-18 16 views
5

私は、std :: asyncがEclipseのwithroid ndkでWindowsのcygwinと一緒にサポートされているかどうかをチェックしようとしました。私が使用した機能は以下のC++を使ってアンドロイドndkで不完全な型を無効に使用しました。11 std :: async

マシンです:r8e

のEclipse:cygwinの

のAndroidで8に勝つ64ビットジュノ4.2.1

ADT:22.0.1

struct Foo 
{ 
Foo() : data(0) {} 
void sum(int i) { data +=i;} 
int data; 
}; 

int main() 
{ 
    Foo foo; 

    auto f = std::async(&Foo::sum, &foo, 42); 
    f.get(); 
    std::cout << foo.data << "\n"; 
} 

次のエラーが表示されます。

説明リソースパスの場所T 'STD :: __ async_sfinae_helper ::タイプ{別名構造体のstd ::未来}' sample.cppの/ Cli13/JNIライン63 C不完全な型の 無効な使用をYPE/C++問題

注:私はまた_GLIBCXX_HAS_GTHREADSを設定していますGXX_EXPERIMENTAL_CXX0XとATOMIC_INT_LOCK_FREE ...デフォルトでは、ndkは4.6ツールチェーンを使用します。私は4.7のgnu-libstd ++をProperties-> C/C++ - > Includesに手動で含める必要がありました。 std :: asyncを動作させるための回避策はありますか?

ありがとうございます。

答えて

4

Android NDK r8eでは、ランタイムライブラリの完全サポートがC++11ではありません。サードパーティ製のstdlibを使用して独自のNDKをコンパイルするか、Clang 3.3をNDKに含めるには、C++11の機能が完了するまで待つ必要があります。

関連する問題