Méthode DLL + argument char* en Java
Bonjour,
Comment appeler une méthode DLL ayant un argument char* en java ?
Dans le .h:
Code:
ExportApi int Method(MSESSION, const char*, const char*, const char*);
L'appel avec du C :
Code:
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:
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:
int Method(com.sun.jna.Pointer MSESSION1, Byte[] charPtr1, Byte[] charPtr2, Byte[] charPtr3);
byte[] ou String ou Pointer ?
Merci d'avance pour votre aide.