Support std et stl Android

Je joue avec android ndk. J'utilise Window Vista avec cygwin (dernière version). J'ai compilé et lancé l'exemple de hello world jni sur mon téléphone. Ça fonctionne. Le code est (est un fichier .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!"); } 

Je voulais ajouter quelques modifications, juste pour y jouer un peu:

 #include <algorithm> 

Et ensuite, dans la fonction ci-dessus, j'ai ajouté:

 int a; a=std::min<int>(10, 5); 

Mais le compilateur dit qu'il ne peut pas trouver le fichier 'algorithme' et que min () ne fait pas partie de std.

Après un peu de recherche, j'ai constaté que l'android ndk possède un répertoire gnu-libstdc ++ avec tous les fichiers std nécessaires. En lisant les documents de NDK, j'ai appris que usint std :: * devrait fonctionner sans modification du code (si l'on inclut les fichiers d'en-tête appropriés). Mais il semble que gcc sur cygwin ne soit pas en mesure de trouver les fichiers nécessaires.

Quelles sont les étapes à suivre pour pouvoir utiliser std et stl dans un fichier .cpp dans une application Android ndk?

  • Android ndk std :: to_string support
  • One Solution collect form web for “Support std et stl Android”

    Des documents de NDK r5 / CPLUSPLUS-SUPPORT.html:

    Par défaut, les en-têtes et les bibliothèques pour la bibliothèque de système d'exécution C ++ minimale (/system/lib/libstdc++.so) sont utilisés lors de la création de sources C ++.

    Vous pouvez toutefois sélectionner une implémentation différente en configurant la variable APP_STL à autre chose dans votre Application.mk, par exemple:

    APP_STL: = stlport_static

    Pour sélectionner l'implémentation STLport statique fournie avec ce NDK. Valeur Les valeurs APP_STL sont les suivantes:

    Système -> Utilisez la bibliothèque d'exécution C ++ minimale par défaut.
    Stlport_static -> Utilisez STLport construit comme une bibliothèque statique.
    Stlport_shared -> Utilisez STLport construit comme une bibliothèque partagée.
    Gnustl_static -> Utilisez GNU libstdc ++ comme bibliothèque statique.

    Quel NDK utilisez-vous? Avez-vous essayé de compiler l'une des exemples d'applications qui utilisent le STL tel que test-libstdc ++?

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.