在Application.mk文件中,当使用APP_STL:= stlport_static时我可以使用c ++ 11 dynamic_cast但它不会编译"随机"特征
我已经尝试了APP_STL:= gnustl_static和APP_STL:= c ++ _ static但是那些不允许我使用dynamic_cast。
什么是Application.mk适当的设置才能同时使用两者?
我目前的Application.mk看起来像是:
APP_CPPFLAGS += -std=c++11
APP_STL := stlport_static
APP_ABI := armeabi armeabi-v7a x86
编辑:
根据Michaels的说明,最终有效的Application.mk是:
#LIBCXX rebuild was needed once when using APP_STL := c++_static
LIBCXX_FORCE_REBUILD := true
APP_CPPFLAGS += -std=c++11 -frtti -fexceptions
APP_STL := c++_static
#Also the gnu compiler can be used
#APP_STL:= gnustl_static
APP_ABI := armeabi armeabi-v7a x86
NDK_TOOLCHAIN_VERSION := 4.8
答案 0 :(得分:1)
听起来你忘了启用RTTI,dynamic_cast
用它来执行运行时类型检查。
[To]确保与早期版本兼容,[NDK工具链]默认编译所有C ++源
-fno-rtti
。要为整个应用程序启用整个应用程序的RTTI支持,请将以下行添加到Application.mk文件中:
APP_CPPFLAGS += -frtti
我在stlport来源中没有看到任何random
标题,因此它可能不支持该功能。请改用另一个STL实现,例如gnustl。
所以你需要的是:
APP_CPPFLAGS += -std=c++11 -frtti
APP_STL := gnustl_static