使用c ++ 11 std :: async在android ndk中使用不完整类型无效

时间:2013-07-18 13:23:49

标签: android c++ c++11 android-ndk cygwin

我尝试使用以下函数来检查android ndk中是否支持std :: async以及windows中的cygwin。我使用的功能如下

机器:64位win 8与cygwin

Android:r8e

Eclipse:Juno 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 line 63 C / C ++问题

注意:我已经设置了_GLIBCXX_HAS_GTHREADS以及 GXX_EXPERIMENTAL_CXX0X 以及ATOMIC_INT_LOCK_FREE ...默认情况下,ndk使用4.6工具链。我必须在Properties-&gt;中手动包含gnu-libstd ++ for 4.7。 C / C ++ - &gt;包括。是否有任何解决方法使std :: async工作???

谢谢。

1 个答案:

答案 0 :(得分:4)

Android NDK r8e没有C++11的完整运行时库支持。您需要使用某个第三方stdlib编译自己的NDK,或等待Google将Clang 3.3包含在NDK中C++11功能完整。