Java 프로그램 (Windows 컴퓨터)에서 C 코드를 호출하기 위해 JNI를 사용하여 테스트 할 간단한 프로그램을 만들고 있지만 UnsatisfiedLinkError가 표시됩니다.UnsatisfiedLinkError ClassName.methodName() V
오류 :
$ ls
HelloWorld.class HelloWorld.h HelloWorld.java ctest.c ctest.dll
$ java HelloWorld
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloWorld.helloFromC()V
at HelloWorld.helloFromC(Native Method)
at HelloWorld.main(HelloWorld.java:9)
HelloWorld.java
public class HelloWorld {
native void helloFromC();
static {
System.loadLibrary("ctest");
}
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.helloFromC();
}
}
ctest.c
#include <jni.h>
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_helloFromC (JNIEnv * env, jobject jobj) {
printf("Hello from C!\n");
}
나는 아무런 문제없이 헤더 파일 HelloWorld.h
을 생성, 내가 HelloWorld.class
이 때문에 컴파일 내 기본 라이브러리 ctest.dll
을 만들었지 만 실행하려면 위와 같은 오류가 발생합니다. 내 라이브러리를로드 할 때 명시 적으로 헤더 파일을 ctest.c
에 내 원시 코드에 포함 시키면 사용자에게 절대 경로를 시도했습니다. 또한 System.load()
을 정규화 된 경로와 함께 사용하려고 시도했지만 여전히 동일한 오류가 발생합니다.