내 Java 코드에서 만든 VB .NET DLL 메서드에 액세스하려고합니다. JNA를 사용하여이 작업을 수행하려고합니다.'HelloWorld'함수를 찾는 동안 오류가 발생했습니다. 지정한 프로 시저를 찾을 수 없습니다.
내 Java 코드는 다음과 같습니다.
:Hello.java는
import com.sun.jna.Native;
public class Hello {
public static void main(String[] args) {
String myPath = System.getProperty("user.dir");
System.setProperty("java.library.path", myPath);
NativeInterface nInterface = (NativeInterface) Native.loadLibrary(
"SampleDLLProject", NativeInterface.class);
nInterface.HelloWorld();
}
}
그리고 여기가 직면하고 NativeInterface.java
import com.sun.jna.*;
public interface NativeInterface extends com.sun.jna.Library {
public void HelloWorld();
}
오류가있는 인터페이스를의 (DLL이 메소드를 호출)
스레드 "main"의 예외 java.lang.UnsatisfiedLinkError : 'HelloWorld'함수를 찾는 동안 오류가 발생했습니다 : 지정된 프로 시저를 찾을 수 없습니다. com.sun.jna.Function. (Function.java:179) com.sun.jna.NativeLibrary.getFunction (NativeLibrary.java:345) at com.sun.jna.NativeLibrary.getFunction (NativeLibrary.java : Hello.main에서 $ Proxy0.HelloWorld (알 수없는 소스) 에서 com.sun.jna.Library $ Handler.invoke (Library.java:203) 325) (Hello.java:10)
또한 나는 ildasm을 사용하여 어떤 종류의 불일치에 대해서도 dll을 검사했습니다.
는 Hello.java의 DLL 및 이름 본 메소드 이름 사이에는 차이가 없다.
흥미롭게도, 나는 윈도우 dll msvcrt.dll의 puts() 메소드에 대한 코드를 테스트하려고 시도했지만 완벽하게 정상적으로 작동합니다. 그래서 문제는 DOT NET dll입니다. 도와주세요!