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.