Obsługa Android std i stl
Gram z Androidem ndk. Używam Windows Vista z cygwin (najnowsza wersja). Skompilowałem i uruchomiłem próbkę hello world jni na moim telefonie. To działa. Kod to (is a .plik 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!");
}
Chciałem dodać kilka modyfikacji, żeby się trochę pobawić:
#include <algorithm>
A potem, w funkcji powyżej, dodałem:
int a;
a=std::min<int>(10, 5);
Ale kompilator mówi, że nie może znaleźć pliku 'algorithm' i że min() nie jest częścią std.
Po odrobinie poszukiwań, odkryłem, że android ndk ma katalog gnu-libstdc++ ze wszystkimi niezbędnymi plikami std. CzytajÄ ... c dokumenty NDK, nauczyĹ 'em siÄ™, Ĺźe usint std::* powinien dziaĹ' aÄ ‡ bez jakiejkolwiek modyfikacji kodu (jeĹ "li wĹ' Ä ... czyÄ ‡ odpowiednie pliki nagĹ ' ăłwkowe). Ale wygląda na to, że gcc na cygwinie nie jest w stanie znaleźć potrzebnych plików.
Jakie są kroki, aby móc używać std i stl w obrębie .plik cpp w aplikacji NDK na Androida?
1 answers
Z NDK r5 ' s docs/CPLUSPLUS-SUPPORT.html:
Domyślnie nagłówki i biblioteki dla minimal C++ runtime system library (/system/lib / libstdc++.so) są używane podczas budowania źródeł C++.
Można jednak wybrać inną implementację ustawiając zmienną APP_STL do czegoś innego w Twoim Application.mk, na przykład:
APP_STL: = stlport_static
Aby wybrać statyczną implementację STLport dostarczoną z tym NDK. Wartości APP_STL są następujące:
System - > Użyj domyślnej minimalnej biblioteki uruchomieniowej C++.
stlport_static - > użyj STLport jako biblioteki statycznej.
stlport_shared - > użyj STLport zbudowanego jako biblioteka współdzielona.
gnustl_static - > użyj GNU libstdc++ jako biblioteki statycznej.
Jakiego NDK używasz? Czy próbowałeś skompilować jedną z przykładowych aplikacji wykorzystujących STL, takich jak test-libstdc++?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-07 23:40:43