J'ai fonction dans le code natif void clang_tokenize(CXTranslationUnit TU, CXSourceRange Range, CXToken **Tokens, unsigned *NumTokens);
Comment faire passer un pointeur vers un pointeur (**) dans JNA?
La fonction va revenir tableau alloué de jetons en jetons **Tokens
et comptent dans *NumTokens
. J'ai généré des structures en utilisant jnaerator, donc elles sont prêtes. comment puis-je écrire la signature de la fonction dans Java (pointeur vers le pointeur est la principale difficulté)? Pour les non signés * j'ai IntByReference
dans JNA. Devrais-je utiliser PointerByReference? Donnez-moi par exemple s'il vous plaît
Merci! Je vais donner un essai –
Dans la dernière ligne, je reçois une erreur: java.lang.IndexOutOfBoundsException: Limites dépasse l'espace disponible: taille = 8, décalage = 48 \t à com.sun.jna.Memory.boundsCheck (Memory.java:197) \t à com.sun.jna.Memory $ SharedMemory.boundsCheck (Memory.java:73) \t à com.sun.jna.Memory.share (Memory.java:115) \t au com .sun.jna.Structure.toArray (Structure.java:1261) \t à com.sun.jna.Structure.toArray (Structure.java:1280) –
toke.size() n'est pas égal à iref.getValue() pour une raison quelconque, mais il devrait être à mon humble avis. Je comprends que la valeur est renvoyée par Clang et elle peut être fausse, mais je pense qu'elle a été suffisamment testée. –