簡體   English   中英

無法在 C# 中加載 DLL

[英]Unable to load DLL in C#

如何在ac#項目中加載dll

錯誤

無法加載 DLL 'Reader.dll':找不到指定的模塊。 (來自 HRESULT 的異常:0x8007007E)

代碼示例

[DllImport("Reader.dll")]
 public static extern byte OpenReader(ref IntPtr hCom, byte LinkType, string com_port);

圖像:異常截圖

如果問題確實是“無法找到”,那么使用 Sysinternals 的 ProcMon 將顯示系統正在尋找 DLL 的位置。

但是,這些異常通常意味着“我找到了 DLL 但我無法加載它”,這可能是因為缺少 DLL 的依賴項而不是 DLL 本身,或者因為 DLL 與嘗試的應用程序不兼容加載它。 如果您的 C# 應用程序設置為“任何 CPU”,並且您使用的是 64 位計算機,則在加載非托管 32 位 DLL 時會出現此類錯誤。

隔離問題的一種方法是創建一個加載 DLL 的簡單 C/C++ 項目。 (如果您無權訪問導入庫,請使用 LoadLibrary 動態加載它。)然后使用 Dependency Walker 來分析測試工具,它會報告丟失的 DLL 的名稱。

雖然 reader.dll 無法加載 GPSVC.dll 和 IESHIMS.DLL。 我設法通過在 application.exe 上運行 corflags 命令使其工作,該應用程序現在被標記為 32 位


corflags application.exe /32bit+

版本:v4.0.30319

CLR 標頭:2.5

聚乙烯:PE32

CorFlags : 3

國際:1

32位:1

簽名:0

如果它是一個簡單的 C DLL,它只需要與 .exe 位於同一文件夾中。

我在另一個帖子中找到了這個。 也許它會幫助你的情況

Windows 7/64 上的 NUnit“缺少”GPSVC.DLL

對我來說,解決方案是在客戶端機器上安裝 C++ Redisstrable X64。 (適用於 Visual Studio 2015、2017 和 2019 的 Microsoft Visual C++ Redistributable。)

dll 已經在正確的位置,與 .exe 文件位於同一文件夾中。

在這里你找到了下載鏈接:

https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM