找不到std :: string操作(即stol,stoi)NDK8d

时间:2013-03-19 12:06:27

标签: android android-ndk

我尝试使用支持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

这些功能实际上不起作用吗?

2 个答案:

答案 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