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

Java Discussion :

Méthode DLL + argument char* en Java


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Août 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 16
    Par défaut Méthode DLL + argument char* en Java
    Bonjour,

    Comment appeler une méthode DLL ayant un argument char* en java ?

    Dans le .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExportApi int Method(MSESSION, const char*, const char*, const char*);
    L'appel avec du C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // User name.
    char User[50];
    // Password of the user.
    char Password[50];
     
    Method(Session, User, Options, Password);
    L'interface JNA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        /**
         * Original signature : <code>int Method(MSESSION, const char*, const char*, const char*)</code><br>
         * <i>native declaration : line 694</i><br>
         * @deprecated use the safer methods {@link #Method(com.sun.jna.Pointer, java.lang.String, java.lang.String, java.lang.String)} and {@link #Method(com.sun.jna.Pointer, com.sun.jna.Pointer, com.sun.jna.Pointer, com.sun.jna.Pointer)} instead
         */
        @Deprecated 
        int Method(com.sun.jna.Pointer MSESSION1, Pointer charPtr1, Pointer charPtr2, Pointer charPtr3);
     
        /**
         * Original signature : <code>int Method(MSESSION, const char*, const char*, const char*)</code><br>
         * <i>native declaration : line 694</i>
         */
        int Method(com.sun.jna.Pointer MSESSION1, String charPtr1, String charPtr2, String charPtr3);
    Donc, comment appeler cette méthode ?
    - Utiliser le type String au lieux de char[] ne modifie-t-il pas le traitement de la méthode?
    - Utiliser des byte[] comme argument et donc modifier le contenu de l'interface JNA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Method(com.sun.jna.Pointer MSESSION1, Byte[] charPtr1, Byte[] charPtr2, Byte[] charPtr3);
    byte[] ou String ou Pointer ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Ca dépend de l'utilisation qui est fait du paramètre char*.

    Ici il s'agit de const char* donc accessible uniquement en lecture. Tu peux donc tout à fait utiliser des String.

    S'il s'agissait de char* modifié par la méthode, il aurait fallut utiliser des byte[] afin de pouvoir récupérer la valeur de retour.


    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Méthode pour lancer une appli Java au démarrage
    Par Bridou dans le forum Linux
    Réponses: 2
    Dernier message: 11/11/2006, 15h40
  2. Integration d'un fichier dll dans une application Java
    Par menzlitsh dans le forum Langage
    Réponses: 3
    Dernier message: 21/09/2006, 15h54
  3. utilisation méthodes DLL COM
    Par ep31 dans le forum MFC
    Réponses: 5
    Dernier message: 30/03/2006, 14h45
  4. Lire un argument char *
    Par Benjy dans le forum C
    Réponses: 10
    Dernier message: 24/02/2006, 16h16
  5. Méthode avec argument objet de la même classe
    Par Black-Ghost dans le forum C++
    Réponses: 5
    Dernier message: 30/01/2006, 10h01

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