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

Android NDK clang compiler can't find std::make_unique

我正在使用 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> header.

中看到了它

我在这里错过了什么?有没有办法通过 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): Assertion 'DeclKind != Decl::LinkageSpec && "Should not perform lookups into linkage specs!"' failed.