如何将xfunction指针转换为Java数组?

时间:2012-03-22 13:03:26

标签: java arrays pointers jna

我有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的调用。

1 个答案:

答案 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中的数组