在 MacO 上使用 JNI 的线程 "main" java.lang.UnsatisfiedLinkError 中出现异常

Exception in thread "main" java.lang.UnsatisfiedLinkError with JNI on MacOs

我正在尝试了解 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)

这是我的目录文件列表 Screenshot of direcotry

这是 java 文件

class MyMain{

    public native void printmsg();
    static{
        System.loadLibrary("prtmsg");
    }

    public static void main(String[] args){
        MyMain mm = new MyMain();
        mm.printmsg();
    }
}

请帮我解决这个问题。提前致谢:)

我在使用 MacOS 编译 c 代码时找到了答案,我们必须使用以下命令:

gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC

此处作为编译代码的名称,它应该在开头附加 lib 并在结尾附加 .dylib。

在 java 加载时

 static{
        System.loadLibrary("LibraryName");
    }

不使用 libLibraryName.dylib 只需使用 LibraryName。提取 lib 和 .dylib !