Исключение в потоке "main" java.lang.UnsatisfiedLinkError с JNI на MacO
Я пытаюсь узнать о JNI, но в первой программе, которую я написал, она дает следующее исключение при запуске скомпилированной программы Java.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no prtmsg in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at MyMain.<clinit>(main.java:5)
это мой список файлов каталога Скриншот директории
Это файл Java
class MyMain{
public native void printmsg();
static{
System.loadLibrary("prtmsg");
}
public static void main(String[] args){
MyMain mm = new MyMain();
mm.printmsg();
}
}
Пожалуйста, помогите мне решить это. Заранее спасибо:)
1 ответ
Решение
Я нашел ответ на это при использовании MacOS для компиляции кода c, мы должны использовать следующую команду:
gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC
здесь в качестве имени скомпилированного кода он должен добавляться с lib в начале и.dylib и в конце.
При загрузке в Java
static{
System.loadLibrary("LibraryName");
}
без использования libLibraryName.dylib просто используйте LibraryName. Извлеките lib и.dylib!