Question

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

Voici donc la fonction C en question:

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 me donne:

  

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!

Était-ce utile?

La solution

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ée]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top