IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Passer des valeurs de variables de Java à C++


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : amateur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut Passer des valeurs de variables de Java à C++
    Bonjour,

    Je développe actuellement une application Android avec OpenFrameworks en C++.

    Je souhaiterais utiliser l'UI Android pour contrôler certaines fonctions de mon applications telles qu'accéder aux paramètres, changer de mode dans l'application (chose qui fonctionne déjà dans mon code C++), régler l'IP de mon serveur - il s'agit d'un client TCP -.

    J'ai cherché un peu partout sur le web, j'ai découvert JNI.

    J'ai découvert que cela servait à utiliser du code natif dans Java et vice versa. Mais je ne trouve pas comment faire pour renvoyer des valeurs, par exemple une variable dans mon code C++ depuis l'interface Android.

    Est-ce seulement possible ?
    Si oui comment ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,

    As tu regardé déjà les samples ici :
    http://developer.android.com/tools/s...x.html#Samples

  3. #3
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : amateur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut
    Oui je les ai regardé.
    Pour l'instant j'ai réussi a éxécuter du code natif dans java, grave au jni, mais je cherche une méthode pour passer des valeurs de variables entre java et c++. Est ce que c'est seulement possible ?

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Et tu ne passes pas des valeurs de variable via des méthodes ?
    Tu veux que ta variable Java pointe sur le même espace mémoire que ta variable CPP ?ça me parait tendu si c'est ça...

  5. #5
    Candidat au Club
    Homme Profil pro
    amateur
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : amateur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut
    Désolé pour la latence de ma réponse, mais je n'ai pas eu beaucoup de temps pour me pencher dessus.
    Ce que je souhaiterais réaliser, en prenant un exemple simple, c'est par exemple de faire bouger aléatoirement une ellipse, via openframeworks qui tourne en c++, et de pouvoir changer la couleur via le menu de l'action overflow de android ui.
    Mon soucis est que je ne peux accéder a ce qui se passe au sein de la fonction " extern "C" avec les variables que j'utilise au sein de openframeworks. quand j'y fais appel je reçois des erreurs comme quoi mes variables ne sont pas déclarés...

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 20
    Par défaut JNI
    Bonjour,

    Il y a peu j'ai développé une application en Qt pour Android.

    Pourquoi Qt ?

    Qt propose une bibliothèque pour Android dans laquelle on peut utiliser pas mal de chose en natif comme les capteurs, l'interface utilisateur, et bien d'autre.

    Sur Qt j'ai porté un GPS, une Class écrite en java et ensuite une interaction en le code C++ et le code en Java.

    On récupère les class en java dans la fonction
    JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* /*reserved*/)
    Dans cette fonction on défini un environnement :
    JNIEnv* env;

    Puis on récupère les class et méthode java avec :
    env->FindClass
    env->GetStaticMethodID
    env->GetMethodID

    Et pas mal d'autres méthodes, mais une doc est quelques part mais je sais plus ou ...

    De ces méthodes on récupère des jclass et des jobject exploitable sous Qt en c++.
    JNI propose également de convertir des jstring en const char *
    (la Doc de JNI te donnera des exemples sur comment faire)

    Ensuite pour utiliser des méthode native en java il faut utiliser la méthode :
    env->RegisterNatives(jclass, JNIMethods[], jint nMethods)

    Et il faut déclarer les méthodes en static aussi bien en java que en C++ (je ne sais malheureusement pas faire autrement).

    Par contre, je ne me suis pas posé la question de comment récupérer mes variables c++ en java, je dois dire que j'y ai pas pensé et je suis pas sur que cela existe.(j'ai pas cherché non plus)

    Mais les variables java peuvent être récupérées en C++ sans trop de difficulté.

    Ne pas hésiter si tu as d'autres questions

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/02/2006, 17h28
  2. récupérer des valeurs de variables de pages en pages
    Par harlock59 dans le forum Langage
    Réponses: 6
    Dernier message: 19/12/2005, 12h04
  3. Passer la valeur dune variable javascript à une variable xsl
    Par nramariavelo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/12/2005, 17h27
  4. Réponses: 13
    Dernier message: 21/09/2005, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo