java开发中,调用动态库(.dll文件)失败:Can't find dependent libraries

来源:互联网 发布:在华生活的日本人 知乎 编辑:程序博客网 时间:2024/05/29 17:51

场景描述:使用vs2013封装c/c++代码为native.dll文件,在java项目中调用出现调用失败情况

java项目调用dll文件的两种方式

方式一:System.loadLibrary(“native”);
1 只显示名称,目录路径和后缀.dll不需要
2 动态库管理目录:把native.dll拷贝到C:\Windows\System32目录(默认管理目录)下,也可以自定义设置动态库管理目录(在环境变量path,添加目录)

方式二:System.laod(“D:/Javawork/Batch/native.dll”)
1 直接填充文件的全路径。例如:D:/Javawork/Batch/native.dll
2 路径是反斜杠(/),区别于系统路径的正斜杠()

区别:
loadLibrary方法需要设置动态库管理目录
laod方法,直接通过全路径加载,不需要理会动态库管理目录

实现以上方法调用,仍然报错:找不到依赖库
原因:在调用native.dll文件前,需要先调用其他的.dll文件
思路:找出需要的其他.dll文件件,使用工具Dependency Walker,通过Dependency Walker工具,发现缺少的.dll文件。去http://www.zhaodll.com/下载,注意32/64位。
下载的.dll文件拷贝到C:\Windows\System32目录下

阅读全文
0 0