Android ndk std :: to_string支持

我正在使用android NDK r9d和工具链4.8,但我不能使用std :: to_string函数,编译器会引发此错误:

error: 'to_string' is not a member of 'std' 

android ndk不支持这个function吗? 我尝试APP_CPPFLAGS := -std=c++11没有运气。

你可以尝试LOCAL_CFLAGS := -std=c++11 ,但似乎有几个string函数不适用于Android NDK 。

另一种方法是自己实现它。

 #include <string> #include <sstream> template <typename T> std::string to_string(T value) { std::ostringstream os ; os << value ; return os.str() ; } int main() { std::string perfect = to_string(5) ; } 

NDK r9 +可以使用llvm-libc ++ ,它可以完全支持cpp11。

在你的Application.mk中,你必须添加:

 APP_STL:=c++_static 

要么

 APP_STL:=c++_shared 

摇篮

如果你正在寻找Gradle构build系统的解决scheme。 看这个答案 。

简短的回答。

添加string

 arguments "-DANDROID_STL=c++_shared" 

在你的build.gradle 。 喜欢

 android { ... defaultConfig { ... externalNativeBuild { cmake { ... arguments "-DANDROID_STL=c++_shared" } } } ... } 

实验性的Gradle插件

如果你正在寻找一个解决scheme的实验Gradle插件,这对我工作…

用com.android.tools.build:gradle-experimental:0.9.1testing

 model { ... android { ... ndk { ... stl = "c++_shared" } } }