2011-04-11 4 views
1

J'utilise JNA pour utiliser une bibliothèque C++ dans mon application Java. J'utilise une interface en Java pour utiliser ces fonctions. La fonction utilise trois arguments en C++: un entier non signé, un caractère const *, et un long *. JNA implémente des chaînes de caractères (en fonction de leurs documents) en Java pour transmettre un caractère *. De même, il utilise un long [] pour passer dans un long *. Je suis confus, cependant, sur le type que je devrais passer dans le int non signé. Le caractère * qui est passé représente le nom du fichier, et peu importe le type que j'utilise pour le premier argument, il ne semble pas reconnaître le fichier. De plus, le dernier type long renvoie une valeur après l'exécution de la fonction. Si j'utilise le type short ou int pour le premier argument, ce nombre semble correct, cependant, si j'utilise le type long pour le premier argument, il est incorrect. Quelqu'un peut-il aider?Comment utiliser un entier non signé pour pouvoir utiliser une fonction pour JNA (Java Native Interface)?

Pour un exemple, voici ce que le prototype réel en C++ est suivi par ce que j'ai actuellement le prototype d'interface en Java:

int JrConnect(unsigned int id, const char* config_file, long* handle); 

public int JrConnect(int[] id, String[] config_file, long[] handle); 

Répondre

0

utilisation de la JNA IntByReference.

+1

Cela ne nécessite-t-il pas que l'attribut unsigned int soit un pointeur vers un entier non signé? – deworde

Questions connexes