上个月激动了下,由iOS开发变成了Java开发,还是类似嵌入式的,努力学习。最近工作中用到JNA 调用动态库dll,Java程序也是仿着delphi程序写的。但是在运行的时候,一直出现Invalid memory access 这个错误,如下图所示:
图1、Invalid memory access
直译就是内存错误。想着应该是数据类型转换出现了错误。例如dll方法中出现了int*,我仿着delphi用int去映射。问题就在这里,JNA关于指针映射这块有自己的类型。int*对应的是IntByReference这个类型(其他指针类型转换参照JNA指针映射 )。改正类型后,程序成功运行。