我正在尝试了解 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(); }}请帮我解决这个问题。提前致谢 :)
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
我在使用 MacOS 编译 c 代码时找到了答案,我们必须使用以下命令:
gcc -shared -o libLibraryName.dylib CProgramName.c -fPIC
这里作为编译代码的名称,它应该在开头和 .dylib 和结尾附加 lib。
在java中加载它时
static{
System.loadLibrary("LibraryName");
}
不使用 libLibraryName.dylib 只使用 LibraryName。提取 lib 和 .dylib !
添加回答
举报
0/150
提交
取消