永发信息网

通过java的jnative怎么调用这样的一个接口函数啊,关于unsigned long *_Snr需要怎么定义

答案:1  悬赏:80  手机版
解决时间 2021-04-01 12:28
  • 提问者网友:抽煙菂渘情少年
  • 2021-04-01 04:53
通过java的jnative怎么调用这样的一个接口函数啊,关于unsigned long *_Snr需要怎么定义
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-04-01 06:20
用的JNA调用动态库。应该是你所说的。这个代码我真的不方便发过去,非常抱歉。上面写得很清楚了
public class 类名(暂时写为B){
public interface 这里写个名字(暂时写为A) extends Library{
A INSTATANCE = (A) Native.loadLibrary("dll的名字",A.class);
//下面这个是C++的方法。

int CMAPI CM_OpenDevice([out]void ** pphDevice,
[in]int Instance,
[in] CM_DEVICEADDRINFO* pDeviceAddr,[in]int Flag);
}
//main函数里面调用下面这个方法就相当于调用了C++的那个方法

public methodName (int CMAPI CM_OpenDevice([out]void ** pphDevice,
[in]int Instance,
[in] CM_DEVICEADDRINFO* pDeviceAddr,[in]int Flag);
){
return A.INSTANCE.CM_OpenDevice(pphDevice,Instance,pDeviceAddr,Flag);

}

....main(){
B b = new B();

b.methodName;

}

}

大致写了下。就是这样。IN代表输入参数,OUT代表输出参数。调用方法之前把所有的参数都定义好,比如你定义了String a = "";如果这个是输出参数的话,调用完这个方法,a的值就自动就了。是方法里面给赋的值。
假如你DDL的文件名是libABC.DLL,上面写这个名字的时候要写ABC,不要前面的LIB,也不要后面的,DLL
还有就是C++和JAVA类型对应的关系。在网上应该可以找到,比如C++是**,JAVA就是[][]等
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯