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?

Author: Deduplicator, 2011-09-07

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++?

 14
Author: NuSkooler,
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