Android NDK clang 编译器找不到 std::make_unique

标签 android c++ android-ndk clang c++14

我正在使用 Android NDK r10d。我的 application.mk 是这样设置的:

APP_CFLAGS := -DANDROID -DBUILD_OGLES2
APP_CPPFLAGS := $(APP_CFLAGS) -fexceptions -frtti -std=c++14
APP_STL := gnustl_static
APP_ABI := armeabi-v7a
APP_PLATFORM := android-15
NDK_TOOLCHAIN_VERSION := clang

我正在使用 std::make_unique在我的代码中,它没有编译(说没有找到)。从 C++14 开始,STL 中应该可以使用此功能。我四处寻找,似乎 clang 没有在 NDK 中使用 GNU STL 4.9。如果是,它就会可用,因为我在里面看到它 <memory>标题。

我在这里错过了什么?有没有办法通过 clang 使用 4.9 GNU STL?

最佳答案

make_unique 无法通过 clang 的 gnuSTL 获得。您可以尝试改用 LLVM libc++。在您的 Application.mk 中设置:

APP_STL := c++_static
NDK_TOOLCHAIN_VERSION := clang

编辑: 强制使用 GNU STL 4.9(通过更改 android-ndk-r10d/toolchains/*toolchain_name*-clang3.5/setup.mk 中的 TOOLCHAIN_VERSION)会使构建崩溃:

clang++:/s/ndk-toolchain/src/llvm-3.5/llvm/tools/clang/lib/AST/DeclBase.cpp:1293: clang::DeclContext::lookup_result clang::DeclContext::lookup(clang::DeclarationName): 断言 'DeclKind != Decl::LinkageSpec && “不应该对链接规范执行查找!”' 失败。

关于Android NDK clang 编译器找不到 std::make_unique,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018310/

相关文章:

java - 共享首选项不起作用

c++ - OpenAL 捕获音频时出错

android - 库突然不会在动态链接器(NDK)中加载

c++ - 错误 : typedef redefinition with different types

java - Android Activity - 最后一节课与否?

Android Studio "mobile"和 "wear"项目模块,共享组件位置

c++ - 关于 C++ 中 sizeof(class) 用法抛出的错误

c++ - glUnmapBuffer(GL_ARRAY_BUFFER) 与 glBindBuffer(GL_ARRAY_BUFFER,0)

gradle - 如何在Android Studio中使用我自己的Android.mk文件

java - 拆分错误 - IndexOutOfBoundsException