我尝试使用支持c ++ 11的ndk r8d设置我的第一个android项目。 一些c + 11机制工作正常(即lambada表达式),但是当我尝试时 要使用其中一个新的字符串操作,编译失败(错误:'stol'不是'std'的成员)。这是我的 项目设置:
Application.mk
APP_MODULES := MyLib
APP_CPPFLAGS := -std=gnu++0x
APP_CPPFLAGS += -frtti
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -DDEBUG
APP_ABI := armeabi-v7a
APP_PLATFORM:=android-14
APP_STL := gnustl_static
APP_GNUSTL_CPP_FEATURES := rtti exceptions
NDK_TOOLCHAIN_VERSION=4.7
这些功能实际上不起作用吗?
答案 0 :(得分:6)
似乎在another thread中回答。
你不能使用这些功能的原因是根深蒂固的,不幸的是目前无法解决。
在GNU STL中,这些函数的实现以某种方式依赖于c99(_GLIBCXX_USE_C99宏),Android没有使用它
根本原因似乎是在armeabi-v7a平台上的GNU stdlibc ++中禁用了C99功能使用,因为Bionic libc不支持复杂的数学运算(Android上的标准C库是Bionic)
答案 1 :(得分:0)
添加:
APP_STL:= c ++ _ static
到Application.mk为我解决了这个问题(使用gcc 4.8.4)。
解决方案来自Daniel Tavares,来自Google Groups post。