2
JNA를 사용하여 mySMS.DLL의 함수를 호출하여 장치에서 SMS를 읽으려고합니다. sms 세부 정보는 sMessage, sFrom 및 sTime으로 읽혀집니다. 그러나 아래 오류가 발생합니다.Java에서 JNA를 사용할 때 잘못된 메모리 액세스
오류의 원인에 대해 알지 못합니다. 도와주세요. 많은 감사합니다. DLL에 대한
C:\Users\Chi\Desktop\SMS_Pool\install\sms.dll\Mysms.dll>set classpath=.;C:\Program Files (x86)\Java\jre7\lib\*
C:\Users\Chi\Desktop\SMS_Pool\install\sms.dll\Mysms.dll>"C:\Program Files (x86)\Java\jre7\bin\java" SMSTest
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:371)
at com.sun.jna.Function.invoke(Function.java:315)
at com.sun.jna.Library$Handler.invoke(Library.java:212)
at com.sun.proxy.$Proxy0.ReadSms(Unknown Source)
at SMSTest.main(SMSTest.java:35)
API 파일 :
_declspec(dllexport) BOOL _stdcall ReadSms(int comport, int baud, int nIndex, char* sMessage, char* sFrom, char* sTime, BOOL bDel);
자바 코드 :
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class SMSTest {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary( Platform.isWindows() ? "Mysms" : "c", CLibrary.class);
boolean ReadSms(int comport, int baud, int nIndex, String sMessage, String sFrom, String sTime, boolean bDel);
}
public static void main(String[] args) {
try{
String a= new String();
String b= new String();
String c = new String();
System.out.println(CLibrary.INSTANCE.ReadSms(6,115200, 1, a,b,c,false));
}catch (Exception e){
}
}
}
원시 코드를 확인하면 이러한 문제는 일반적으로 발생하지 않습니다. – mprabhat
win32와 win64가 일치하지 않을 수 있습니다? – PeterMmm