如何在JNA中将指针传递给指针(**)?

时间:2013-05-12 04:19:09

标签: java-native-interface jna

我在本机代码void clang_tokenize(CXTranslationUnit TU, CXSourceRange Range, CXToken **Tokens, unsigned *NumTokens);

中有功能

该函数将返回**Tokens中分配的令牌数组和*NumTokens中的令牌数。我使用jnaerator生成了结构,所以它们已经准备好了。我怎样才能在java中编写函数签名(指向指针的主要难点)?对于未签名的*我在JNA中有IntByReference。我应该使用PointerByReference吗?请举个例子

1 个答案:

答案 0 :(得分:2)

假设CXToken是一个结构,并且被调用的函数返回被调用者分配的数组:

PointerByReference pref = new PointerByReference();
IntByReference iref = new IntByReference();

clang_tokenize(tu, range, pref, iref);
CXToken token = new CXToken(pref.getValue());
CXToken[] tokens = (CXToken[])token.toArray(iref.getValue());