欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JNative的一些使用心得

程序员文章站 2022-06-08 17:02:55
...

JNative的一些使用心得

数据类型对应:

JNative的一些使用心得

注1:如果DLL的返回值是指针,那么用整数类型接收返回值(这得到的是指针的地址),然后
通过Pointer和NativeMemoryBlock进行转换,例如:

native.setRetVal(Type.INT);
int address = native.getRetValAsInt();
pointer = new Pointer(new NativeMemoryBlock(address, buffSize))
byte[] data = pointer.getMemory();
// 然后截取data里面的信息来获取内容

注2:如果DLL的参数是指针型,那么通过Pointer来作为参数传入:

Pointer pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(pointer_len));
native.setParameter(0, pointer);

注3:不管DLL里面是int还是unsigned int类型,在java这边一律用同样字节数的int类型匹配,
但DLL里面如果是unsigned int时,在java边需要把收到的int转为无符号的整数存放到long中,
其他同样情况的无符号数的处理类似。

注4:结构体里面的char*转到String时,可能在String里面会出现\0,这时需要自己做截断处理。