本文主要是介绍JNative中给DLL传入数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// 调用DLL,取出数组中的最大值
public voic fnGetMax(int[] arrInt) {
try
...
...
// 创建JNative对象
JNative jnative = JNative("test.dll","fnGetMax");
// 为数组创建空间
Pointer aArrIntInput = new Pointer(MemoryBlockFactory.createMemoryBlock(4 * arrInt.length));
// 初始化数组
for (int i = 0; i < arrInt.length; i++) {
aArrIntInput.setIntAt(4 * i, arrInt[i]);
}
// 设定传入参数
jnative.setParameter(0, pArrIntInput); // 数组指针
jnative.setParameter(1, arrInt.length); // 数组大小
// 设定返回类型
jnative.setRetVal(Type.INT);
// 调用DLL
jnative.invoke();
// 打印返回值
int iRet = jnative.getRetValAsInt();
System.out.println(iRet);
catch
...
...
}
double的场合
// 传入和返回类型是double
double dParam = 10.23;
...
...
jnative.setParameter(0, Type.DOUBLE, Stirng.valueOf(dParam));
...
jnative.setRetVal(Type.DOUBLE);
...
String dRet = jnative.getRetVal();
System.out.println(dRet);
这篇关于JNative中给DLL传入数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!