最近准备用Java调用读卡器进行读卡和刷卡,厂商没有java版的SDK,只提供了c++的dll动态库,下面是我调用动态库的一些方法,如果有大神有更好的方法,欢迎指导。

第一步:

下载JNA的jar包导入到程序里面(maven可以自行到仓库拿)JNA读取dll动态库导致jvm崩溃

dll接口:

JNA读取dll动态库导致jvm崩溃

java对应的接口:

JNA读取dll动态库导致jvm崩溃

其中loadLibrary是加载dll动态库文件,JT_ReaderVersion是重写的接口,对应的C++里面的OnGetVersion方法。

当main方法调取接口的时候会导致jvm崩溃:

JNA读取dll动态库导致jvm崩溃

JNA读取dll动态库导致jvm崩溃

上面是报错信息,原因是因为向动态库中传值时出问题了,传值的时候需要指定参数的内存大小

JNA读取dll动态库导致jvm崩溃

JNA读取dll动态库导致jvm崩溃

必须指定内存大小Pointer p = new Memory(512*512);

修改了内存大小,就解决问题了。如果你遇到同样的问题,不妨试一试。



相关文章:

  • 2021-11-20
  • 2021-09-25
  • 2021-06-12
  • 2021-12-14
  • 2021-04-05
  • 2022-12-23
  • 2021-05-18
  • 2021-07-05
猜你喜欢
  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2021-10-18
  • 2022-12-23
  • 2022-12-23
  • 2022-01-25
相关资源
相似解决方案