加载dll文件失败 java.lang.UnsatisfiedLinkError: D:workspacefacelibJSeetaface6.dll: Can't find dependent libraries 的解决

摘要:
最近使用java做一个人脸识别的项目,需要调用dll动态库文件。

最近使用java做一个人脸识别的项目,需要调用dll动态库文件。但是在调用时,出现问题,花了好久才解决,

报错如下:

java.lang.UnsatisfiedLinkError: D:workspacefacelibJSeetaface6.dll: Can't find dependent libraries

报错出现的代码在:

    System.load(DLL_PATH + "/JSeetaFace6.dll");
分析原因:
Can't find dependent libraries 为加载依赖环境出错
解决思路
1. 查看加载的路径,看看是否存在此文件,如果不存在,将文件放到对应路径
这里我用过最直接的方法,将 dll 文件放到 jdk/bin 目录下,直接从环境加载 System.loadLibrary("JSeetaFace6"); 如果重新启动不报错,表示是加载路径错误问题
 2. 如果不是路径文件,那就是环境问题了,缺少加载dll文件所需要的Vc环境,下载相应的环境 vc_redist.x64.exe ,双击安装即可
下载地址: https://www.onlinedown.net/soft/621941.htm
根据本机系统位数,下载对应的环境安装即可
3. 一般情况下,进行完第2步之后,差不多问题都可以解决了,但是也有可能你加载的dll所依赖的库文件还是缺失,这个时候需要手动处理了
下载一个可以检测dll依赖的库文件的工具,看看缺失哪些依赖库,我这里用到的工具是 : dependency walker
官网下载地址: http://www.dependencywalker.com/
汉化版下载地址: http://www.3h3.com/soft/124863.html
我这里使用汉化版,下载完成后,打开程序,点击文件--> 打开,选择dll文件打开后,页面如下:

加载dll文件失败 java.lang.UnsatisfiedLinkError: D:workspacefacelibJSeetaface6.dll: Can't find dependent libraries 的解决第1张

图中黄色问号是加载此dll缺失的依赖,其中 SEETAFACE开头的这些我会从本地项目加载,所以可以看到我的环境还缺少 VCRUNTIME140_1.DLL这个依赖,需要我单独去下载

百度一下,直接找到 VCRUNTIME140_1.DLL 下载,将对应位数的dll下载出来,放到系统 C:WindowsSystem32 目录下,

然后将此dll写到注册表,可将下面的代码保存为“注册.bat“,放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成vcruntime140_1.dll注册(win98不支持)。

@echo 开始注册
copy vcruntime140_1.dll %windir%system32
regsvr32 %windir%system32vcruntime140_1.dll /s
@echo vcruntime140_1.dll注册成功
@pause

这里奉上下载地址和详细的操作方法 :

https://www.jb51.net/dll/vcruntime140_1.dll.html

将所有缺失的 dll 文件都补全之后,再次启动,调用dll,错误问题就解决了

以上就是dll加载失败的解决方法,有疑问可以留言交流

原创作品,转载注明出处


免责声明:文章转载自《加载dll文件失败 java.lang.UnsatisfiedLinkError: D:workspacefacelibJSeetaface6.dll: Can't find dependent libraries 的解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NOIP2008提高组(前三题) -SilverN键盘各种按键对应的ASII码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

md /mdd /ml /mt/mtd

VC编译选项 多线程(/MT)多线程调试(/MTd)多线程 DLL (/MD)多线程调试 DLL (/MDd)C 运行时库                        库文件Single thread(static link) ML            libc.libDebug single thread(static link) MLd      ...

Debug与Release的区别

  Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。Release  Buil...

qt调用仪器驱动库dll实现程控

在《使用qt+visa实现程控》中实现了qt调用visa库的简单Demo本文将尝试使用qt调用仪器驱动库来实现对仪器仪表的程控 开发环境 系统: windows 10 环境: qt 5.80 库: visa 16.0 + ivi 16.0 配置过程 驱动库为动态库,主要包含.h,.lib,.dll,则按照调用动态库方式进行尝试 1. 添加依赖项 在.p...

Side by Side Assembly介绍--manifest文件的使用

什么是Side-by-Side Assembly? Side-by-Side Assembly(建称SxS)是微软在Visual Studio 2005(Windows 2000?)中引入的技术,用来解决Windows平台上的DLL Hell问题。DLL Hell的介绍可以看Wikipedia的文章。简单的说,DLL Hell窘境包括了Windows应用程...

【DLL相关】实现函数的DLL封装,并在另一个项目中调用

直接给出步骤: ===========函数的DLL封装=========== 1.创建第一个项目:win32控制台程序,应用程序类型:DLL,附加选项:导出符号(命名:double_dll) 2.double_dll.h中加入函数定义   extern DOUBLE_DLL_API int doublefun(int);//DOUBLE_DLL_API 根...

什么是 .manifest 文件

恩,为了大家都能很方便的理解,我将尽量简单通俗地进行描述。[现象]对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把此exe文件拷贝到别人电脑上时,便不能运行了,大致的错误提示如下:应用程序配置不正确,请重新安装程序……或者是MSVCR80D.dll 没有找到什么的(我记得不是...