为Android NDK编译C++ 11源代码

Spo*_*ook 4 c++ android android-ndk c++11

我正在尝试在Windows上使用Android NDK编译一些C++ 11源代码,但没有太多运气.请注意,我已经阅读了有关编译C++ 11的其他一些问题,但遗憾的是它们并没有太大帮助.

我已经下载了ADT Bundle和最新的NDK(android-ndk-r9b-windows-x86.zip).

这些是我的配置文件:

Application.mk

APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION = 4.8
LOCAL_CPP_FEATURES += exceptions
LOCAL_CFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud)

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := procalc-core

LOCAL_SRC_FILES := pcc_arithmetics.cpp \
pcc_arithmetics_tools.cpp \
pcc_common.cpp \
pcc_core.cpp \
pcc_dms_tokenizer.cpp \
pcc_dynamic_numerics.cpp \
pcc_exceptions.cpp \
pcc_expressiontree.cpp \
pcc_expression_containers.cpp \
pcc_messages.cpp \
pcc_numerics.cpp \
pcc_resolvers.cpp \
pcc_syntaxtree.cpp \
pcc_tokenizer.cpp \
sm_Bignum.cpp \
sm_Math2D.cpp \
sm_MathNumerics.cpp \
ss_Streams.cpp

include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

构建命令

cd %AndroidProjects%ProCalc\jni\
D:\Android\ndk\ndk-build

pause
Run Code Online (Sandbox Code Playgroud)

错误
实际上是其中一个错误,但它显然没有识别新的C++ 11关键字,如autonullptr.

D:/(path)/jni/pcc_arithmetics.cpp: In static member function 'static 
ProCalcCore::BaseNumeric* (* ProCalcCore::Arithmetics::GetFunctionMethod(std::string))
(const std::vector<const ProCalcCore::BaseNumeric*>&)': 
D:/(path)/jni/pcc_arithmetics.cpp:4077:11: error: 'nullptr' was not declared in 
this scope

return nullptr;
       ^
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Ale*_*ohn 9

LOCAL_CPP_FEATURES += exceptions
LOCAL_CFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud)

应该进入Android.mk文件.或者,你可以把

APP_CFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud)

到Application.mk.您也可以使用APP_CPPFLAGS,以便项目中的C源(如果您选择添加它们)可以编译(C编译器不喜欢-std=c++11).