MacOs 上的 JNI 线程“main”java.lang.UnsatisfiedLink

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

这是我的目录文件列表 direcotry 的屏幕截图


这是java文件


class MyMain{


    public native void printmsg();

    static{

        System.loadLibrary("prtmsg");

    }


    public static void main(String[] args){

        MyMain mm = new MyMain();

        mm.printmsg();

    }

}

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


RISEBY
浏览 127回答 1
1回答

莫回无

我在使用 MacOS 编译 c 代码时找到了答案,我们必须使用以下命令:gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC这里作为编译代码的名称,它应该在开头和 .dylib 和结尾附加 lib。在java中加载它时&nbsp;static{&nbsp; &nbsp; &nbsp; &nbsp; System.loadLibrary("LibraryName");&nbsp; &nbsp; }不使用 libLibraryName.dylib 只使用 LibraryName。提取 lib 和 .dylib !
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java