Dot-Net

即使 dll 與執行檔位於同一文件夾中,DllImport 也找不到 dll

  • December 21, 2013

我正在嘗試使用llvm-fs項目,該項目為 F# 提供 llvm 綁定。我已經編譯了該LLVM-3.1.dll文件,--enable-shared它現在與我編譯的執行檔位於同一目錄中(我檢查了Environment.CurrentDirectory)。在DllImportllvm-fs 看起來像:

[<DllImport(
   "LLVM-3.1.dll",
   EntryPoint="LLVMModuleCreateWithName",
   CallingConvention=CallingConvention.Cdecl,
   CharSet=CharSet.Ansi)>]
extern void* (* LLVMModuleRef *) moduleCreateWithNameNative(string ModuleID)

然而,當我執行我的應用程序時,它會出錯:

Unable to load DLL 'LLVM-3.1.dll': The specified module could not be found.
(Exception from HRESULT: 0x8007007E)

如何獲取要載入的 DLL?作為參考,這是我嘗試載入的確切 DLL

這:

“指定的模組無法找到”

可以指向某個庫,該庫LLVM-3.1.dll依賴於,而不是LLVM-3.1.dll自身。

在這種情況下,當 DLL 或 EXE 無法載入時,Depends.exe非常方便 - 它顯示完整的 EXE/DLL 依賴關係樹,突出顯示無法載入或失去的內容。

引用自:https://stackoverflow.com/questions/12191702