Java Void*JNA示例

Java Void*JNA示例,java,jna,Java,Jna,我一直在努力寻找关于JNA中void*示例的示例。我试图理解如何在JNA中使用指针 比如说 在C中: int PTOsetApiOpt(int iOpt,void* lpValue,int iLen) Parameters: iOpt: int lpData: address from which data should be read. iLen: length of data returns int values : 0 as success or -1 as failure. 我们如何

我一直在努力寻找关于JNA中void*示例的示例。我试图理解如何在JNA中使用指针

比如说

在C中:

int PTOsetApiOpt(int iOpt,void* lpValue,int iLen)

Parameters: iOpt: int
lpData: address from which data should be read.
iLen: length of data
returns int values : 0 as success or -1 as failure.
我们如何使用JNA在JAVA中编写它? 我在JAVA中尝试过这个

public MyTest{

 public interface MyLibrary extends Library {
   public int PTOsetApiOpt(int iOpt,Pointer lpValue,int iLen);

 }
 public static void main(String[] args) {
   MyLibrary myLib = (MyLibrary)MyLibrary.INSTANCE;
   int result = myLib.PTOsetApiOpt(1,new Pointer(0),1024);
 }
调用myLib.PTOsetApiOpt时,我会遇到JVM崩溃。我猜这是因为新的指针语句。如何创建指针并将其用作参数,而不会导致JVM崩溃?我已经坚持了两天了。任何提示都很好。提前谢谢

问候,,
-我想我已经弄明白了

下面是我如何用Java编写的

void*lpValue可以是任何类型。所以在C中,它需要int值的地址

 public MyTest{

 public interface MyLibrary extends Library {
   public int PTOsetApiOpt(int iOpt,Pointer lpValue,int iLen);

 }
 public static void main(String[] args) {
   MyLibrary myLib = (MyLibrary)MyLibrary.INSTANCE;
    IntByReference ir = new IntByReference(1);
    //got a result as 0 instead of -1.
    int result = myLib.PTOsetApiOpt(1, ir.getPointer() , ir.getPointer().SIZE);
 }

声明方法以IntByReference作为参数,这样在调用该方法时就不必调用ByReference.getPoint()