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

C++ Discussion :

Comment definir un string java en c++


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut Comment definir un string java en c++
    Slt

    Je developpe avec c++ et je dois faire appel a une dll (dont je n'ai pas les sources) mais voici l'appel fait a cette dll en java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Public ststic void initialise(int i, String s, String s1, boolean flag)
      {
         if... blabla
         .....
         .....
     
         int j = initialise(i, s1, flag)   // ceci est l'appel a la function de la dll

    maintenant comment faire la même chose en c++ ??

    Un petit exemple serait bienvenu

    Merci et bonnes fetes a tous


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Met les balise codes, soit plus précis, relis toi, etc.
    Et je te répondrais avec plaisir.


    Pour l'instant, tout ce que je peut te dire, c'est que tu nous a montré une définition de fonction, et non un appel à une fonction liée dynamiquement.
    En passant, ca m'étonnerais que Java puisse faire un appel à une DLL. (mais peut-être ai-je tord.)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 75
    Points : 92
    Points
    92
    Par défaut
    Salut,

    Pour faire un appel à ta DLL, tu dois passer par JNI.
    JNI te permet d'appeler des méthodes écrites en C++ et c'est via le C++ que tu pourras appeler ta DLL.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut suite
    Sans entrer dans les détails, en java il y a aussi la fonction
    loadlibray(nom de la dll).

    Donc j'ai une dll en c++, qui est appelée par java.

    Le hic, est que dans java un des parametres est String et passé à la dll,
    (String qui vient de java.lang.string)

    Question, comment definit-on cele en c++ ?

    Le code est long mais je vais le couper afin de vous fournir un exemple de chargement de dll, d'appel des functions en java.

    Je crois avoir lu lu quelque part qu'il existe une classe string en C... equivalente a celle de java.lang.string

    Merci

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    Java n'envoi pas "String" a ta DLL, le JM doit caster le String soit en char * soit en autre chose...... Non ? Ou je me trompe ?

  6. #6
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Extrait de thinking in Java concernant JNI :
    http://bruce-eckel.developpez.com/li...aduction/tij2/
    Manifestement il faut déclarer un wrapper sur la méthode, qui permet à une moulinette en ligne de commande de générer un fichier d'entête C ou C++.
    Pas franchement trivial, mais ça fait le boulot tout seul.
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut re
    Citation Envoyé par mtopoloff
    Java n'envoi pas "String" a ta DLL, le JM doit caster le String soit en char * soit en autre chose...... Non ? Ou je me trompe ?
    ??? c'est justement le cast que je cherche, j'ai fait un char pointeur et boum, et aussi avec std::string

    Je ne comprends pas comment passer correctement l'argument à la function

    Merci

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par BertrandA
    Extrait de thinking in Java concernant JNI :
    http://bruce-eckel.developpez.com/li...aduction/tij2/
    Manifestement il faut déclarer un wrapper sur la méthode, qui permet à une moulinette en ligne de commande de générer un fichier d'entête C ou C++.
    Pas franchement trivial, mais ça fait le boulot tout seul.
    Oups.. t'a pas plus compliqué ??? bon je vais essayer et je te tiens au courant.

    Merci

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par BertrandA
    Extrait de thinking in Java concernant JNI :
    http://bruce-eckel.developpez.com/li...aduction/tij2/
    Manifestement il faut déclarer un wrapper sur la méthode, qui permet à une moulinette en ligne de commande de générer un fichier d'entête C ou C++.
    Pas franchement trivial, mais ça fait le boulot tout seul.
    Hmmmm, aprés avoir lu la doc, il faut refaire la dll mais je n'ai pas les sources de cette dll.... as-tu une autre idée ?

    Merci

  10. #10
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Il ne s'agit pas de recompiler la DLL.
    Si tu disposes des sources Java et que ce programme fonctionne, utilise JavaH avec les paramètres adéquats pour générer l'entête C++ : tu obtiendras ainsi le prototype des fonctions de la DLL utilisées par le programme Java.
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par BertrandA
    Il ne s'agit pas de recompiler la DLL.
    Si tu disposes des sources Java et que ce programme fonctionne, utilise JavaH avec les paramètres adéquats pour générer l'entête C++ : tu obtiendras ainsi le prototype des fonctions de la DLL utilisées par le programme Java.
    quand je fais javah sur le fichier .class il ne me genere aucune function,
    juste le prototype de la classe

  12. #12
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    quand je fais javah sur le fichier .class il ne me genere aucune function, juste le prototype de la classe
    : Euh... Et ça ressemble à quoi ? Tu peux poster le résultat généré ?
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par BertrandA
    quand je fais javah sur le fichier .class il ne me genere aucune function, juste le prototype de la classe
    : Euh... Et ça ressemble à quoi ? Tu peux poster le résultat généré ?
    demain je vais poster un exemple de code java, d'une dll et de c++

    ainsi ce sera plus clair pour la reponse et question

    merci

  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 62

    Informations forums :
    Inscription : Décembre 2004
    Messages : 73
    Points : 31
    Points
    31
    Par défaut besoin de repos
    Slt

    comment dire... la fatigue aidant, j'envoyais a javah le mauvais fichier et comme celui ci ne comportait aucune methode native ben il est normal que le resultat obtenu etait null mais en y envoyant le bon fichier alors oui il a generer un bon fivhier h

    avec entre autre :
    JNIEXPORT jboolean JNICALL Java_Read_LireFichier
    (JNIEnv *, jclass, jstring, jboolean)

    Donc, maintenant il ne me reste plus qu'a integrer cela a mon prg c++ et voir si cela marche....

    Mais bon ce sera pour l'an prochain la réponse...

    Je vous souhaite de bonnes fetes et pour les fétard, n'oubliez pas BOB !!!!

Discussions similaires

  1. Le type sql "TEXT" comment le convertir en java String ?
    Par pounaid dans le forum Persistance des données
    Réponses: 2
    Dernier message: 12/06/2008, 09h52
  2. comment convertir un fichier xml en tableau de string (java)
    Par l'indien dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/02/2006, 21h00
  3. Réponses: 2
    Dernier message: 23/01/2006, 15h51
  4. Comment sauver plusieurs String ?
    Par Speed41 dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2004, 13h49
  5. comment connecter VC++ et (java ou VB)
    Par Tray dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 18/11/2002, 13h51

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