2013-11-24 118 views
4

我想在Windows上编译一些C++ 11源代码与Android NDK,但没有多少运气。请注意,我已经阅读了关于编译C++ 11的一些其他问题,但是他们并没有帮助很多。为Android编译C++ 11源代码NDK

我已经下载了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 

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) 

生成命令

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

pause 

错误
这实际上是错误的,但它显然不是像识别或autonullptr C++ 11的关键字。

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; 
    ^

我在做什么错?

回答

8
LOCAL_CPP_FEATURES += exceptions 
LOCAL_CFLAGS += -std=c++11 

应该进入Android.mk文件。或者,您可以将

APP_CFLAGS += -std=c++11 

转换为Application.mk。您也可以使用APP_CPPFLAGS,以便项目中的C源代码(如果您选择添加它们)可以编译(C编译器不会像-std=c++11)。

+0

工作,谢谢! – Spook