Dll-Test
subject:JNA throw Exception content:
JNA version:jna-5.7.0.jar JDK: 1.8.0_271 32bit Windows10 64bit CPU:i5-7500 3.40GHz After invoke the native method a few times, it will throw Exception:java.lang.Error: Invalid memory access Steps to reproduce dll method : function initParams(url :PAnsiChar; appid : PAnsiChar;appkey : PAnsiChar) : Integer ; stdcall ; java method : int initParams(String url, String appid, String appkey);
method implementation:
public interface Agency3intfc extends Library {
public Agency3intfc ag = (Agency3intfc) Native.load("agency3intfc", Agency3intfc.class);
int initParams(String url, String appid, String appkey);
Integer callagency3intfc(String inParams , String outParams);
}
method main test:
public class Agency3intfcTestT {
public static void main(String[] args) {
Agency3intfc a = Agency3intfc.ag;
String url = "url";
String appid = "appid";
String appkey = "appkey";
int stdcall = a.initParams(url, appid, appkey);
System.out.println(a);
System.out.println("init stdcall :" + stdcall);
}
}
Connected to the target VM, address: '127.0.0.1:60308', transport: 'socket'
Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.invokeInt(Native Method)
at com.sun.jna.Function.invoke(Function.java:426)
at com.sun.jna.Function.invoke(Function.java:361)
at com.sun.jna.Library$Handler.invoke(Library.java:265)
at com.sun.proxy.$Proxy0.initParams(Unknown Source)
at dd.Agency3intfcTest.main(Agency3intfcTest.java:12)