在引用C++時若出現”HRESULT:0x8007007E 找不到指定的模組 …”的錯誤,通常有兩種原因。一種是DLL檔不在預期的位置上,一種是DLL檔執行失敗,只要針對此二原因處理幾乎能解決此問題。
DLL檔不在預期的位置上
請確保要呼叫的DLL檔案在以下任意位置上:
- 執行程式的所在目錄
- 在系統資料夾 C:\Windows\System32 (64位元系統的32位元環境則是在 C:\Windows\SysWOW64 )
- 在系統指定變數的對應位置
DLL檔執行失敗
- 執行權限不足
- 沒有該DLL檔對應的執行環境,如各版本的 Visual C++ redistributable 等等
- 該DLL檔有相依的DLL檔案但是找不到或執行失敗(參閱下面說明)
- 部署到client端的C++ 程式,沒有用 Release 組態編譯,而是用 Debug 組態
如何找出DLL檔的相依DLL檔 (以Visual Studio 2019為例)
- 請先確認已安裝 Visual C++相關開發元件及工具
- 開啟開發者命令提示字元 Developer Command Prompt for VS 2019(這邊也可以直接用一般命令提示字元瀏覽到 “C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x86\”)
- 下指令: dumpbin {DLL所在路徑} /dependents
即會列出該DLL檔的相依DLL檔案
Advertisements

Leave a comment