2012-03-22 66 views
0

我有Java应用程序发送指向函数(回调)到某个本地dll内核的指针。 我使用xfunction库进行本机代码的操作。我必须在回调体内将int *指针作为整数数组处理。其实我有com.excelsior.xFunction.Pointer对象。我需要做一些转换com.excelsior.xFunction.Pointer => int []数组的技巧。 JNA库可以帮助(使用com.sun.jna.Pointer,IntByReference)吗?如何将xfunction指针转换为Java数组?

例如,com.excelsior.xFunction.Pointer => com.sun.jna.Pointer => int []数组。 我不想重写代码以消除对xfunction的调用。

回答

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)和n只要做 a com.sun.jna.Pointer.getIntArr(offset,arrayLength)来取回纯Java中的数组