加載dll文件失敗 java.lang.UnsatisfiedLinkError: D:\workspace\face\lib\JSeetaface6.dll: Can't find dependent libraries 的解決


          最近使用java做一個人臉識別的項目,需要調用dll動態庫文件。但是在調用時,出現問題,花了好久才解決,

    報錯如下:

         java.lang.UnsatisfiedLinkError: D:\workspace\face\lib\JSeetaface6.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缺失的依賴,其中 SEETAFACE開頭的這些我會從本地項目加載,所以可以看到我的環境還缺少 VCRUNTIME140_1.DLL這個依賴,需要我單獨去下載

         百度一下,直接找到 VCRUNTIME140_1.DLL 下載,將對應位數的dll下載出來,放到系統 C:\Windows\System32 目錄下,

         然后將此dll寫到注冊表,可將下面的代碼保存為“注冊.bat“,放到dll文件同級目錄(只要在同一個文件夾里面有這兩個文件即可),雙擊注冊.bat,就會自動完成vcruntime140_1.dll注冊(win98不支持)。

@echo 開始注冊
copy vcruntime140_1.dll %windir%\system32\
regsvr32 %windir%\system32\vcruntime140_1.dll /s
@echo vcruntime140_1.dll注冊成功
@pause

         這里奉上下載地址和詳細的操作方法 : 

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

       將所有缺失的 dll 文件都補全之后,再次啟動,調用dll,錯誤問題就解決了

 

       以上就是dll加載失敗的解決方法,有疑問可以留言交流

 

       原創作品,轉載注明出處

       

 

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM