p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 6
    Points : 1
    Points
    1

    Par défaut [JNI] Appel librairie Java depuis C++

    Bonjour,

    J'ai besoin d'aide pour appeler une librairie JAVA depuis du C++.

    Il me faut appeler cette librairie en donnant en arguments :
    - soit une image et des valeurs si c'est possible
    - soit un long string avec le chemin de l'image et les valeurs

    Côté JAVA, j'ai une fonction main qui gère tout. Que dois-je faire de plus pour préparer ? Comment dois-je compiler ?

    Côté C++, comment dois-je procéder pour faire mon appel ?

    Je trouve beaucoup de documentation pour appeler du C/C++ depuis JAVA mais pas l'inverse.

    Merci pour votre aide.

  2. #2
    Expert Confirmé
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2012
    Messages : 355
    Points : 2 775
    Points
    2 775

    Par défaut

    Plop,

    Pourquoi ne pas utiliser un exec en C/C++ en invoquant javac, puis de même avec "java" pour lancer ton main.

    En gros quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if(fork() == 0) 
    {
      if(fork() == 0) {
        execvp("javac", "Classe.java");
      }
      wait(NULL); // On attend que le 2ème fils compile
      execvp("java", "Classe"); // On lance le programme
    }
    wait(NULL); // On reprend l'exécution du processus principal quand on a tout fini
    En sachant qu'il faut mettre les bon paramètres dans les execvp. Cela te permettrait d'exécuter ton code depuis du C.

    Pour ce qui du passage de paramètres, tu les passes directement dans le second execvp, afin que ton main puisse les récupérer depuis le code C.

  3. #3
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 6
    Points : 1
    Points
    1

    Par défaut

    Merci pour la réponse.

    Autant je maîtrise la programmation JAVA, autant je ne connais rien en C++ même si les concepts sont les mêmes.

    Du coup, je ne sais pas quelle est la solution la plus rapide.

    Concrètement, il y un logiciel existant en C++ auquel je rajoute un plugin. Dans ce plugin, il y a une partie de traitement, c'est ma partie JAVA.

    Je suis désolé, je pars vraiment de loin et je ne comprends rien du tout.

  4. #4
    Membre chevronné
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    avril 2008
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : avril 2008
    Messages : 362
    Points : 734
    Points
    734

    Par défaut

    Il y a la fonction CallObjectMethod dans JNI qui permet d'appeler une méthode d'objet Java depuis C++. Par contre, JNI peut être difficile a maîtriser si tu ne connais pas trop le C++, en particulier pour tout ce qui est de la gestion de la mémoire.
    Si tu te sens d'attaque, ce lien montre comment gérer la communication Java vers C++ et C++ vers Java: http://stackoverflow.com/questions/5...m-c-in-android

  5. #5
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 6
    Points : 1
    Points
    1

    Par défaut

    Merci Math_lab, je vais essayer de m'en sortir avec ces infos.

  6. #6
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 6
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    J'ai bien avancé.

    La classe est trouvée, la méthode aussi mais le retour est null...

    Le problème peut-il venir du fait que ma méthoe en appelle d'autres ?...

    Si oui, dois-je en conclure qu'avec JNI on ne peut appeler une et une seule méthode ?

    Merci de votre réponse.

  7. #7
    Expert Confirmé
    Avatar de olivier.pitton
    Homme Profil pro
    Développeur Java
    Inscrit en
    juin 2012
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2012
    Messages : 355
    Points : 2 775
    Points
    2 775

    Par défaut

    Pourrais-tu montrer ton code stp.

  8. #8
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 6
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    J'ai identifié le problème : un fichier properties qui n'était pas chargé.

Discussions similaires

  1. JNI -> Appeler méthode Java depuis C++ qui instancie un objet
    Par MilWolf dans le forum Général Java
    Réponses: 4
    Dernier message: 07/02/2015, 12h36
  2. Appel méthode java depuis javascript
    Par Dragna_x dans le forum Wicket
    Réponses: 2
    Dernier message: 24/06/2011, 14h35
  3. [JNI] appel méthode Java (superclasse ?)
    Par gassi64 dans le forum APIs
    Réponses: 0
    Dernier message: 17/06/2009, 15h09
  4. Appel API JAVA depuis VB
    Par vince29 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/04/2008, 10h23
  5. [XSLT] [JAVA] Appeler fonction java depuis XSL
    Par greg_one dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/05/2007, 22h11

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