JNA读取dll动态库导致jvm崩溃
最近准备用Java调用读卡器进行读卡和刷卡,厂商没有java版的SDK,只提供了c++的dll动态库,下面是我调用动态库的一些方法,如果有大神有更好的方法,欢迎指导。
第一步:
下载JNA的jar包导入到程序里面(maven可以自行到仓库拿)
dll接口:
java对应的接口:
其中loadLibrary是加载dll动态库文件,JT_ReaderVersion是重写的接口,对应的C++里面的OnGetVersion方法。
当main方法调取接口的时候会导致jvm崩溃:
上面是报错信息,原因是因为向动态库中传值时出问题了,传值的时候需要指定参数的内存大小:
必须指定内存大小Pointer p = new Memory(512*512);
修改了内存大小,就解决问题了。如果你遇到同样的问题,不妨试一试。