Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 句柄的JNA等价物*_Java_Java Native Interface_Jna - Fatal编程技术网

Java 句柄的JNA等价物*

Java 句柄的JNA等价物*,java,java-native-interface,jna,Java,Java Native Interface,Jna,我必须使用第三方dll中定义的c函数 __declspec(dllimport) Init(DWORD id,HANDLE* handle); Jnabaile非常友好,生成了以下方法签名 public static native int Init(int id,PointerByReference handle); 并将其用作 public interface Dll extends Library { public Dll _dll = (Dll)Native.LoadLibra

我必须使用第三方dll中定义的c函数

__declspec(dllimport) Init(DWORD id,HANDLE* handle);
Jnabaile非常友好,生成了以下方法签名

public static native int Init(int id,PointerByReference handle);
并将其用作

public interface Dll extends Library
{
    public Dll _dll = (Dll)Native.LoadLibrary("dll_name");
    public int Init(int id,PointerByReference handle);
}

public void init()
{
     long hwnd = 0;
     LongByReference lbr = new LongByRefrence(hwnd);
     PointerByReference pbr = new PointerByReference();
     pbr.setPointer(lbr.getPointer());
     int ret = _dll.init(0x01,pbr);
}

但是这会使JVM崩溃。。有人能告诉我在JNA中映射void**的合适方法吗

PointerByReference.getValue()
提供被调用方“返回”的值。这是可以用来初始化句柄值的值。无需“初始化”指针引用

public void init()
{
     PointerByReference pbr = new PointerByReference();
     int ret = _dll.init(0x01,pbr);
     HANDLE handle = new HANDLE(pbr.getValue());
}

我试过了,但结果还是一样。JVM崩溃,说异常访问违规(0xc0000005)
pbr.getValue()
null?如果
\u dll.init()
返回一个无效值,您当然不应该使用它。jvm在
\u dll.init()
行本身上崩溃。。。到目前为止,我使用JNI成功地使用了这个dll,并且工作得非常好。。也许我会让JNA再试一次,timeIs
Init()
期待它的参数有什么特别之处?
句柄*
是否应该以某种方式初始化?没有
句柄
是由
Init()初始化的。下面是我正在使用的jni代码
HANDLE-hwnd;int-ret=Init(id和hwnd)
其中
id
作为参数传递给JNI函数,并将
hwnd
转换为
long
并返回给java。