Я играю с Android ndk. Я использую Window Vista с Cygwin (последняя версия). Я скомпилировал и запустил на своем телефоне пример Hello World jni. Это работает. Код (это файл .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 () не является частью стандартного ввода.
После небольшого поиска я обнаружил, что у android ndk есть каталог gnu-libstdc ++ со всеми необходимыми std-файлами. Читая документы NDK, я узнал, что usint std :: * должен работать без каких-либо изменений в коде (если он включает соответствующие заголовочные файлы). Но похоже, что gcc на cygwin не может найти нужные файлы.
Какие шаги необходимо предпринять, чтобы иметь возможность использовать std и stl в файле .cpp в приложении Android ndk?