JNA를 사용하여 Java에서 DLL에 액세스하는 것이 처음입니다. .NET에서 작성된 DLL 내의 클래스에서 메소드에 액세스해야한다. 이 샘플 DLL을 아래에 작성하면 AuditID 및 Server ID를 얻으려고합니다. 코드를 실행하는 동안 다음 오류로 끝납니다. 어떤 조언도 정말 고맙게 생각합니다.JNA를 사용하여 Java에서 DLL 호출
/// 오류 ///
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'GetEnrollcontext': The specified procedure could not be found.
// DLL 파일 코드가 사실 //
SampleDLL.ProfileEnroll enrollcontext = new SampleDLL.ProfileEnroll();
enrollcontext.Url =” url”;
enrollcontext.AuditIdType = SampleDLL.ProfileId;
enrollcontext.AuditId = “22222222 “;
enrollcontext.ServerId = “server1”;
/// 자바 코드 ///
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Structure;
import dllExtract.DLLExtractTest.SampleDLL.Enrollcontext;
public class SampleDLLExtract {
public interface SampleDLL extends Library {
SampleDLL INSTANCE = (SampleDLL) Native.loadLibrary("SampleDLL",
SampleDLL.class);
public static class Enrollcontext extends Structure {
public String auditId;
public String serverId;
}
void GetEnrollcontext(Enrollcontext ec); // void();
}
public static void main(String[] args) {
SampleDLL sdll = SampleDLL.INSTANCE;
SampleDLL.Enrollcontext enrollContext = new SampleDLL.Enrollcontext();
sdll.GetEnrollcontext(enrollContext);
System.out.println(sdll.toString(sdll.GetEnrollcontext(enrollContext)));
}
}
많은 연구 끝에 JNA 프레임을 사용할 수 없다는 것이 확인되었습니다. VB 또는 C Sharp로 코딩 된 DLL 파일을 호출하는 작업. JNA는 시스템 DLL로 작업하지만 타사 DLL에는 적합하지 않습니다. – SamK