Я играю с android ndk. Я использую Window Vista с cygwin (последняя версия). Я скомпилировал и запустил приветственный образец jni world на моем телефоне. Это работает. Код (является .cpp файлом):
#include <string.h>
#include <jni.h>
extern "C" {
JNIEXPORT jstring JNICALL Java_org_android_helloworld_HelloworldActivity_invokeNativeFunction(JNIEnv* env, jobject javaThis);
};
jstring Java_org_android_helloworld_HelloworldActivity_invokeNativeFunction(JNIEnv* env, jobject javaThis)
{
return env->NewStringUTF("Hello from native code!");
}
Я хотел добавить некоторые изменения, просто чтобы немного поиграть с ним:
#include <algorithm>
а затем в вышеприведенной функции я добавил:
int a;
a=std::min<int>(10, 5);
но компилятор говорит, что он не может найти алгоритм файла и что min() не является частью std.
После небольшого поиска я обнаружил, что у android ndk есть каталог gnu-libstdС++ со всеми необходимыми файлами std. Читая документы NDK, я узнал, что usint std:: * должен работать без каких-либо изменений кода (если в него включены правильные файлы заголовков). Но похоже, что gcc на cygwin не может найти нужные файлы.
Каковы шаги, которые необходимо предпринять, чтобы использовать std и stl в файле .cpp в приложении Android ndk?