Этот код выдаст сообщение об ошибке «to_string не было объявлено в этой области»
#include <jni.h>
#inlcude <string>
#include <android/log.h>
using namespace std;
JNIEXPORT jboolean JNICALL Java_com_package_activity_method
(JNIEnv *env, jobject classObject,jdouble number) {
String string= to_string(number);
__android_log_print(ANDROID_LOG_DEBUG, "JNI","The number is: %s,string);
return;
}
если отследить файл заголовка, я могу найти их в string.h -> basic_string.h
inline string
to_string(double __val)
{
const int __n =
__gnu_cxx::__numeric_traits<double>::__max_exponent10 + 20;
return __gnu_cxx::__to_xstring<string>(&std::vsnprintf, __n,
"%f", __val);
}
Так что это было объявлено в конце концов ...
Я могу решить эту проблему, написав свою собственную версию to_string
String to_string(double number){
std::stringstream ss;
ss << number;
return ss.str(); }
или изменив -DANDROID_STL на c ++ _ static
но что я пытаюсь понять, какая часть кода скрывает метод to_string в gnustl от того, что его видели.