2010-05-11 19 views
0

J'essaie actuellement d'accéder à une API C en utilisant JNA. Mais j'ai un problème avec les paramètres entiers non signés qui sont passés par référence.JNA entier non signé par référence donne des résultats étranges

Voici donc la fonction C en cause:

int EE_DataGetNumberOfSample(DataHandle hData, unsigned int* nSampleOut); 

En Java je:

public int EE_DataGetNumberOfSample(Pointer hData, ByReference nSampleOut); 

Et voici comment je l'utilise:

IntByReference nSamplesTaken = new IntByReference(); 

edk.EE_DataGetNumberOfSample(hData.getValue(), nSamplesTaken); 

int nativeNSamplesTaken = nSamplesTaken.getValue(); 

System.out.println(Integer.toBinaryString(nativeNSamplesTaken)+"("+nativeNSamplesTaken+")"); 

Cela donne moi:

11000100110110010011000000 (51602624)

Altough il devrait être 0.

Y at-il quelque chose de mal avec la façon dont j'utilise la JNA-API?

Merci!

Répondre

1

Pour répondre à ma propre question:

Il n'y a rien de mal avec les extraits de code que j'ai posté ici, mais il y avait une autre erreur sans aucun rapport qui n'a rien à voir avec la question.

[fermé]