Problème de passage de paramètres entre C et java avec JNA

aurhas Messages postés 16 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 juin 2010 - 26 mai 2010 à 11:42
aurhas Messages postés 16 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 juin 2010 - 26 mai 2010 à 15:08
Bonjour,
après de nombreuses tentatives, j'ai réussi à utiliser des fonctions, que j'ai créées dans une DLL en C, avec java grâce à JNA. Cependant, je n'arrive pas à échanger de paramètre comme il le faudrait.
J'ai par exemple une fonction en C :
float read_CAN (int ftHandle, char numTrame, char *type, char *module);

sous java je la déclare de cette façon :
public float read_CAN (int ftHandle, char numTrame, char type, char module);

Je voudrais donc passer comme paramètres ftHandle et numTrame et récupérer un float, type et module.
Mais seule la valeur float est correctement retournée, idem avec toutes mes fonctions dont les prototypes sont semblables.
A quoi cela est du ? Ma façon de déclarer les fonctions dans java est elle incorrecte ? Comment passe-t-on des pointeurs ?

Merci d'avance de vos réponses qui j'en suis sûr me feront progresser.

1 réponse

aurhas Messages postés 16 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 3 juin 2010
26 mai 2010 à 15:08
je reviens après d'autres tentatives...
avec le même code C que précédemment, voici la déclaration de ma fonction sous java :
public float read_CAN (int ftHandle, short numTrame, ShortByReference type, short module);

Cependant cela ne fonctionne pas non plus puisque si j'initialise la valeur pointée par type à 10 par exemple, la valeur est inchangée.
idem en mettant ByteBuffer...

quelqu'un a-t-il d'autres idées ?
0
Rejoignez-nous