【问题标题】:Invalid use of incomplete type in android ndk using c++11 std::async使用c ++ 11 std :: async在android ndk中无效使用不完整类型
【发布时间】:2013-07-17 11:28:10
【问题描述】:

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

机器:64bit win 8 with cygwin

安卓: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 第 63 行 C/C++ 问题

注意:我已经设置了 _GLIBCXX_HAS_GTHREADS 和 GXX_EXPERIMENTAL_CXX0X 以及 ATOMIC_INT_LOCK_FREE... 默认情况下,ndk 使用 4.6 工具链。我必须在 Properties-> C/C++ -> Includes 中手动包含 4.7 的 gnu-libstd++。有什么办法可以让 std::async 工作???

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2017-10-24
      相关资源
      最近更新 更多