次の関数を使用して、std::async が Windows の cygwin と一緒に Eclipse の Android ndk でサポートされているかどうかを確認しようとしました。私が使用した関数は次のとおりです
マシン: cygwin を使用した 64 ビット win 8
アンドロイド: r8e
日食: ジュノ 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";
}
次のエラーが表示されます。
説明 リソース パスの場所 タイプ 不完全な型 'std::__async_sfinae_helper::type {aka struct std::future}' の無効な使用 Sample.cpp /Cli13/jni 行 63 C/C++ 問題
注: _GLIBCXX_HAS_GTHREADS とGXX_EXPERIMENTAL_CXX0X をATOMIC_INT_LOCK_FREEと共に設定しました... デフォルトでは、ndk は 4.6 ツールチェーンを使用します。プロパティ-> C/C++->インクルードに4.7用のgnu-libstd++を手動で含める必要がありました。std::async を機能させるための回避策はありますか???
ありがとうございました。