9

我尝试使用支持 c++11 的 ndk r8d 设置我的第一个 android 项目。一些 c+11 机制工作正常(即 lambda 表达式),但是当我尝试使用新的字符串操作之一时,编译失败(错误:'stol' 不是 'std' 的成员)。这是我的项目设置:

应用程序.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

这些功能真的不起作用吗?

4

2 回答 2

6

似乎在另一个线程中得到了回答。

您无法使用这些功能的原因是根深蒂固的,不幸的是目前无法解决。

在 GNU STL 中,这些函数的实现以某种方式依赖于 c99(_GLIBCXX_USE_C99 宏),Android 不使用它

根本原因似乎是 armeabi-v7a 平台上的 GNU stdlibc++ 中禁用了 C99 功能使用,因为 Bionic libc 不支持复杂的数学(Android 上的标准 C 库是 Bionic)。

于 2013-10-15T09:41:52.237 回答
0

添加:

APP_STL := c++_static

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

来自此Google Groups 帖子的Daniel Tavares 的解决方案。

于 2015-12-29T00:15:07.717 回答