Поддержка Android ndk std:: to_string
Я использую android NDK r9d и toolchain 4.8, но я не могу использовать функцию std:: to_string, компилятор выдает эту ошибку:
error: 'to_string' is not a member of 'std'
Не поддерживается ли эта функция на android ndk? Я стараюсь APP_CPPFLAGS := -std=c++11
без везения.
Ответы
Ответ 1
Вы можете попробовать LOCAL_CFLAGS := -std=c++11
, но кажется, что функция нескольких строк недоступна для 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) ;
}
Ответ 2
С NDK r9 + вы можете использовать llvm-libС++, который предлагает полную поддержку cpp11.
В Application.mk вы должны добавить:
APP_STL:=c++_static
или
APP_STL:=c++_shared
Ответ 3
Gradle
Если вы ищете решение для системы сборки Gradle. Посмотрите этот ответ.
Короткий ответ.
Добавьте строку
arguments "-DANDROID_STL=c++_shared"
в build.gradle
. Как
android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
...
arguments "-DANDROID_STL=c++_shared"
}
}
}
...
}
Ответ 4
Экспериментальный Gradle плагин
Если вы ищете решение для экспериментального плагина Gradle, это сработало для меня...
Протестировано с помощью com.android.tools.build: gradle -experimental: 0.9.1
model {
...
android {
...
ndk {
...
stl = "c++_shared"
}
}
}