2013-07-12 9 views
6

Android NDKで非同期プログラミングが動作しているかどうかを知るために、次のサンプルコードを取得しようとしました。 NDKはヘッダーとして認識されるSTL <future>を持っていますが、認識されていないstd::asyncは認識されません。Android NDKのC++ 11 std :: asyncが動作しない

#include <future> 
#include <iostream> 

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"; 
} 

また、すべてのインクルードは、パスが

Errors 
Description Resource Path Location Type 
invalid use of incomplete type 'std::__async_sfinae_helper<void (Foo::*)(int), void (Foo::*)(int), Foo*, int>::type {aka struct std::future<void>}' Sample.cpp /Project12/jni line 50 C/C++ Problem 

Description Resource Path Location Type 
declaration of 'std::__async_sfinae_helper<void (Foo::*)(int), void (Foo::*)(int), Foo*, int>::type {aka struct std::future<void>}' Project12  line 111, external location: D:\android-ndk-r8e-windows-x86_64\android-ndk-r8e\sources\cxx-stl\gnu-libstdc++\4.6\include\future C/C++ Problem 

答えて

9

まま現在のAndroid NDKがすべて組み込まれていない指定されたプロパティ - >パスの下のフォルダや記号に設定されています含まれます:私は使用しようとしたコードは次のようでしたC++ 11の機能の一部です。 NDK r9bのClang 3.3コンパイラはC++ 11の完全な機能ですが、AndroidのSTLstdlibは完全ではありません。

Androidで最新のC++11機能を使用するには、Clang 3.3コンパイラをAndroid NDK r9bから使用してください。また

NDK_TOOLCHAIN_VERSION := clang 

LOCAL_CPPFLAGS変数に-std=c++11スイッチを追加します:あなたのApplication.mkファイルに次の行を入れ

LOCAL_CPPFLAGS += -std=c++11 
+0

まだ私はそれを取得しておりません...実際に私も使用することはできませんよ列挙型はで定義されています... Eclipseやndkやライブラリで問題がありますかわからない – user2508941

+1

NDKの問題です。ちょうど更新を待つ。 Clang 3.3と新しいstdlibはある日そこにいます。 –

+2

@ user2508941 NDK r9が外れていて、clang 3.3です。 – Samveen

関連する問題