C# – 解決 HRESULT:0x8007007E 找不到指定的模組 問題

在引用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為例)

  1. 請先確認已安裝 Visual C++相關開發元件及工具
  2. 開啟開發者命令提示字元 Developer Command Prompt for VS 2019(這邊也可以直接用一般命令提示字元瀏覽到 “C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x86\”)
  3. 下指令: dumpbin {DLL所在路徑} /dependents
    即會列出該DLL檔的相依DLL檔案

Advertisements

留言

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.