我在本机代码void clang_tokenize(CXTranslationUnit TU, CXSourceRange Range, CXToken **Tokens, unsigned *NumTokens);
该函数将返回**Tokens
中分配的令牌数组和*NumTokens
中的令牌数。我使用jnaerator生成了结构,所以它们已经准备好了。我怎样才能在java中编写函数签名(指向指针的主要难点)?对于未签名的*我在JNA中有IntByReference
。我应该使用PointerByReference吗?请举个例子
答案 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());