2.JNA 模拟普通传值参数
C 语言函数:
int function1(int a, oat b, long c)
JNA 模拟:
int function1(int a, oat b, long c)
3.JNA 模拟 C 语言数组
C 语言函数:
void function1(char * data)
void function2(const unsigned char* data)
JNA 模拟:
void function1(char[] data) 或者 void function1(byte[] data)
void function2(char[] data) 或者 void function2(byte[] data)
4.JNA 模拟基本类型指针
JNA 的 ByReference 有很多子类,这些类都在 com.sun.jna.ptr 包中:
IntByReference,LongByReference,FloatByReference,DoubleByReference,ShortByRefe
rence、ByteByReference、PointerByReference 等等
从这些名字大家应该可以看出来他们的作用。
下面直接上例子吧:
C 语言函数:
long function(int * a, long * b, oat * c, double * d, short * e)
JNA 模拟:
long function(IntByReference aRef, LongByReference bRef, FloatByReference cRef,
DoubleByReference dRef, ShortByReference eRef)
如何构建这些对象呢?
FloatByReference cRef = new FloatByReference(); //使用默认初始值(具体多少我也不知道)
FloatByReference cRef = new FloatByReference(0); //初始值为 0
调用方法和普通参数一样:
function(..., cRef, ...);
评论0