[英]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 位於同一文件夾中。
我在另一個帖子中找到了這個。 也許它會幫助你的情況
對我來說,解決方案是在客戶端機器上安裝 C++ Redisstrable X64。 (適用於 Visual Studio 2015、2017 和 2019 的 Microsoft Visual C++ Redistributable。)
dll 已經在正確的位置,與 .exe 文件位於同一文件夾中。
在這里你找到了下載鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.