我有Java应用程序,它将指向函数(回调)的指针发送到某个本机dll内核。 我使用xfunction库进行本机代码的操作。我必须将int *指针作为回调体内的整数数组来处理。实际上,我有com.excelsior.xFunction.Pointer对象。我需要制作一些技巧来改造com.excelsior.xFunction.Pointer => int []数组。 JNA库可以帮助(使用com.sun.jna.Pointer,IntByReference)?
例如,com.excelsior.xFunction.Pointer => com.sun.jna.Pointer => int []数组。 我不想重写代码以消除对xfunction的调用。
答案 0 :(得分:0)
XFunction似乎没有能够获取本机指针。由于它不是开源的,他们的falgship产品是Java混淆器,我认为你被困住了,无法做com.excelsior.xFunction.Pointer => com.sun.jna.Pointer。
所以,正如他们所说(http://www.excelsior-usa.com/xfunction.html):
我们[...]鼓励您先来看看JNA
我认为您最好在完整的JNA中重新编写应用程序的这一部分以执行您想要的操作...或坚持使用XFunction
无论如何,如果你设法找到一种方法来获取XFunction的本机指针,只需将其转换为Java long
并将其传递给JNA的new com.sun.jna.Pointer(long)
,然后再做
一个com.sun.jna.Pointer.getIntArr(offset,arrayLength)
来获取纯Java中的数组