java实现JNI调用dll报错: java.lang.UnsatisfiedLinkError: Can‘t find dependent libraries

最近有个项目,需要调用别人c++ 封装的dll动态库文件,通过java的JNI进行调用实现。在运行程序加载dll时报错如下:
java.lang.UnsatisfiedLinkError: D:\workspace\myzauto\lib\getcpu.dll: Can't find dependent libraries。
       大概意思是找不到依赖库。
       由于是第一次用java调用dll动态库,没啥经验,所以不知道这个问题该怎么解决。在网上查了半天,刚开始以为是程序没有找到此dll,可能是程序类库加载路径不正确导致缺少依赖的dll 。然后各种修改jvm虚拟参数,尝试设置
-Djava.library.path="${workspace_loc}\JNITest;${env_var:PATH}" 。结果还是不行,然后网上说有可能是缺少依赖的其他dll。但是问题是我不知道具体缺少哪些动态库。于是我就得想办法查找缺失依赖库,终于在网上找到一个工具,可以查看你所用的 dll的依赖库,比如显示我缺失的(msvcr100d.dll)。
工具的名字为《DLL依赖查看工具》。
 
        解压, 双击打开DLL依赖查看工具 ,会显示你缺失的dll文件(如:我缺失的msvcr100d.dll);
图片中带有黄色问号的是缺失的dll文件, 你在网上下载缺失的 dll文件(例如我缺失的 msvcr100d.dll)。
然后就是如何安装此缺失的msvcr100d.dll,
网上说只要把此dll放在 C:\Windows\SysWOW64 (Windows 7/8/2008r2)
点击开始菜单-->运行-->输入regsvr32 msvcr100d.dll 后,回车即可解决错误提示 ,问题是根本执行不了注册。所以程序还是启动不了。然后继续搜索如何安装,直到找到如下方案:找到对应缺失的文件。
 
C:\Windows\system32和 C:\Windows\SysWOW64都放入相应的msvcr100d.dll 然后 再用java调用msvcr100d.dll就成功了。本身dll依赖工具检测该dll就是加载 C:\Windows\system32的msvcr100d.dll,因为刚开始我是直接放在了 C:\Windows\SysWOW64,所以不起作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值