在Java中加载DLL - Eclipse - JNI

x.5*_*509 11 java eclipse java-native-interface

我试图使用以下代码System.loadLibrary("mydll")在java中加载一个DLL;

该项目放在D:\ development\project \中,我已将dll放在D:上.然后我在eclipse配置中给出了以下VM参数-Djava.library.path = D:/

但是当我运行时,我得到UnsatisifiedLinkerError.谷歌搜索后,我使用System.load("D:\ mydll.dll");

但是再次遇到同样的问题,有人可以帮忙吗?

Chr*_*ett 8

在库路径中指定DLL文件名的地方,省略它.此外,您的System.loadLibrary调用应该只是'mydll'.我可以告诉你(根据经验),如果你把DLL放在Eclipse项目的根目录中(即D:\ Eclipse Workspace\Proj),它应该可行.任何其他链接器错误可能来自查找其他DLL的依赖性问题.例外是一样的.使用Dependency Walker(http://www.dependencywalker.com/)之类的东西来查看你的DLL是否依赖于系统库路径上的其他任何东西.

编辑:UnsatisfiedLinkError:如果Java虚拟机无法找到声明为native的方法的相应本机语言定义,则抛出该异常 - 您似乎正在使用不存在的JNI函数.


小智 5

您遇到的一个问题是: System.load("D:\mydll.dll"); 应该是 System.load("D:\\mydll.dll"); 或 System.load("D:/mydll.dll");

我在 System.load 上取得了更大的成功,但 loadlibrary 更适合多平台设计。它会为您计算扩展名。