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

我尝试使用ndk r8d和c ++ 11支持来设置我的第一个android项目。 一些c + 11机制工作正常(即lambdaexpression式),但是当我尝试使用新的string操作之一,编译失败(错误:'stol'不是'标准'的成员)。 这是我的项目设置:

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 

这些function实际上不起作用吗?

  • 如何在Android NDK中创build线程?
  • 修复使用Android NDK和std :: vector时的Eclipse错误
  • 执行任务失败':app:compileDebugNdk'
  • 在Android Studio中生成.so文件
  • Android的LatinIME构build
  • C + + 11 cmath函数不在标准命名空间的Android NDK w / gcc-4.8或铿锵3.4
  • android ndk的ndk-gdb与emacs的整合?
  • 如何在NDK本地代码中获取断点并在Android Studio中debugging本机代码?
  • 似乎在另一个线程回答。

    你不能使用这个function的原因是相当深刻的,不幸的是,目前无法解决。

    在GNU STL中,这些函数的实现依赖于c99(_GLIBCXX_USE_C99macros),这是Android不使用的

    根本原因似乎是armeabi-v7a平台上的GNU stdlibc ++中禁用了C99function,原因是仿生libc不支持复杂的math运算(Android上的标准C库是Bionic)。

    添加:

    APP_STL:= c ++ _ static

    到Application.mk为我解决了这个问题(使用gcc 4.8.4)。

    解决scheme通过Daniel Tavares,从这个Google网上论坛发布 。