【问题标题】:NDK compiling error caused by __Atomic, when using RefBase or IBinder使用 RefBase 或 IBinder 时 __Atomic 导致的 NDK 编译错误
【发布时间】:2016-02-25 20:47:12
【问题描述】:

提前感谢您的帮助。

我正在尝试制作一个 NDK 项目并使用 IBinder 和 RefBase(looper、sp、wp 当然需要)。 但即使在链接之前,也会发生编译错误:

arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/include/stdatomic.h:40:9:错误:“_Atomic”没有命名类型 typedef _Atomic _Bool atomic_bool;

那么 stdatomic.h 中的每个符号都无法识别。

我使用了一些 C++11 标志,如下所示,并尝试了一些随机 CFLAGS:

-D_GLIBCXX_USE_WCHAR_T -DUSE_CPUSETS

-std=c++11 -std=gnu++11 -pthread -frtti -fexceptions

我注意到stlport文件stdatomic.h没有包含其他头文件,所以我猜应该有一个或多个编译宏。

但我是 NDK 构建的新手,希望有人能给我一些关于这个问题的建议。

非常感谢@!!@

【问题讨论】:

  • 您可能为 libbinderlibutils 提供 #include 标头,它们不是 NDK 的一部分。这需要格外小心。您的标题是如何组织的?
  • 我会检查并发送反馈给您,抱歉回复晚了。
  • @Josefus.mv 这个问题的任何更新,因为我也面临同样的问题..你能发布答案吗?
  • @AlexCohn 如果我使用的是 libbinder 和 libutils,那么我需要注意什么?
  • @Explore:简而言之,您不需要 STL 来使用系统库,例如装订器。上面的编译错误与对 RefBase et al 的依赖无关。

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


【解决方案1】:

你解决了吗?

我也遇到了这个问题,最后通过将NDK 更新为android-ndk-r12b 并在Application.mk 文件中设置APP_PLATFORM := android-23 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2013-07-19
    • 2015-06-29
    • 1970-01-01
    相关资源
    最近更新 更多