Java jna 使用简单小结

Java在使用jni时sun公司提供的有jna包,一般会在jdk中直接引入包,如果找不到,在网上下载一个jna的包引入就行,在使用jna时主要的注意事项是数据类型传递的问题
对于引入dll库时的数据类型,如C/C++中的参数类型如下
ULONG WINAPI Test(WCHAR input, char strin, int nput, WCHAR wstrout, char *strout, int nout);
其中前三个参数是入参,也就是Java传递给C/C++中的参数,后三个是在Java层分配空间后接收C/C++层传出的参数,在Java层定义如下
1.创建接口加载.ll库
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.WString;
import com.sun.jna.ptr.IntByReference;

public interface JnaTestLib extends Library {

JnaTestLib INSTANCE = (JnaTestLib) Native.loadLibrary("jnitest",
        JnaTestLib.class);

public int Test(WString input, byte[] ch, int i, char[] out,
        IntByReference nlen);

public int TestInt(int input);

public IntByReference Add(IntByReference nlen);

}

在调用时:
WString input = new WString(“中文”);

String ch = "在不";
int i = 5;
char[]out = new char[20];
byte[]out2 = new byte[128];
IntByReference nlen = new IntByReference();
IntByReference nlen2 = new IntByReference();
JnaTestLib.INSTANCE.Test(input, ch.getBytes(), i, out, nlen);
IntByReference r2 = JnaTestLib.INSTANCE.Add(nlen2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值