Исключение в потоке "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!

Другие вопросы по тегам