2
I 타사 DLL
__declspec(dllimport) Init(DWORD id,HANDLE* handle);
JNAerate 정의 AC 기능을 사용해야
는 .... 상기 메소드 서명은 다음 생성하는 일종의 충분
public static native int Init(int id,PointerByReference handle);
그리고 그것을 사용하여
public interface Dll extends Library
{
public Dll _dll = (Dll)Native.LoadLibrary("dll_name");
public int Init(int id,PointerByReference handle);
}
public void init()
{
long hwnd = 0;
LongByReference lbr = new LongByRefrence(hwnd);
PointerByReference pbr = new PointerByReference();
pbr.setPointer(lbr.getPointer());
int ret = _dll.init(0x01,pbr);
}
하지만 이것은 JVM을 충돌 ... 누군가가 내게 JNA에서 void **를 매핑하는 적절한 방법을 말해 줄 수 있습니까?
나는 그랬지만 여전히 같은 결과를 보았습니다. JVM에서 EXCEPTION_ACCESS_VIOLATION (0xc0000005)을 말하는 것으로 충돌합니다. –
'pbr.getValue()'가 null입니까? '_dll.init()'가 유효하지 않은 값을 반환한다면 확실히 사용해서는 안됩니다. – technomage
jvm이'_dll.init()'라인 자체에서 충돌합니다 ... 지금은 JNI를 사용하여이 DLL을 사용하고 완벽하게 작동합니다 ... 아마 JNA에게 다른 시간을 주려고합니다. –