Probleme JNA c-java

pougi95 Messages postés 8 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 16 février 2009 - 9 févr. 2009 à 10:54
pougi95 Messages postés 8 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 16 février 2009 - 9 févr. 2009 à 17:58
Bonjour


J ai en faite une fonction en C que je dois appeler en JAVA j utilise donc JNA

qui est du type :


*****def des struc**

typedef struc s_key_h {

uint32 i;

uint32 t;

} t_key_h;


typedef struct s_key_a{

uint32 num;

struct s_key_h *key_h;

}t_key_a;


***Fonction C****

sint32 Fonction (t_key_a **key_a )


***Mapping JNA***

public struct t_key_h{

public int i;

public int t;


}

public struct t_key_a{

public int num;

public Pointer key_h;


}


int Fonction ( Pointerbyreference key_a)


*****apel de la fonction en JAVA ****


PointerByReference pref = new PointerByReference();

//le chargement de la lib est deja fait d autre fonction fonctionne

lib.Fonction(pref)


J' ai essayé de multiple façon d exploiter la fonction pour essayer de retrouver les struct en java mais sans aucune réussite


SI QUELQU'UN VOIT COMMENT FAIRE

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
9 févr. 2009 à 10:58
Salut,

Quel est le problème au juste ? Tu as des exceptions ?
______________________________________
DarK Sidious
0
pougi95 Messages postés 8 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 16 février 2009
9 févr. 2009 à 11:22
Le problème c est que je n arriver pas a récupérer les valeur des variable retourné par la fonction C
t_keys_a = new t_keys_a();
    Pointer p = pref.getValue();
    tka.num = p.getInt(0);
j'arrive a récupérer le num
mais ensuite je ne vois pas comment faire
0
pougi95 Messages postés 8 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 16 février 2009
9 févr. 2009 à 11:38
Voila ce que j ai fait pour la suite

tka.key_h = p.getPointer(1);
t_keys_h tkh = new t_keys_h();

tkh.i=tka.key_h.getInt(0);
tkh.t=tka.key_h.getInt(1);

Je pense que je me trompe sur la façon de récupérer la structure en java.
0
pougi95 Messages postés 8 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 16 février 2009
9 févr. 2009 à 17:58
Je pense avoir trouver la solution 
c est au niveau du
tka.key_h = p.getPointer(1);
en faite le deuxième élément ce trouver a 4 octet plus loin (car 1 int = 4octect et le premier élément est un int)
tka.key_h = p.getPointer(4);
0