DllImport не может найти dll, хотя dll находится в той же папке, что и исполняемый файл

Я пытаюсь использовать проект llvm-fs, который обеспечивает привязки llvm для F #. Я скомпилировал файл LLVM-3.1.dll с --enable-shared и теперь он находится в том же каталоге, что и мой скомпилированный исполняемый файл (я проверил с помощью Environment.CurrentDirectory). DllImport в llvm-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, которую я пытаюсь загрузить.

Ответ 1

Это:

"Указанный модуль не найден"

может указывать на некоторую библиотеку, от которой LLVM-3.1.dll зависит не от LLVM-3.1.dll.

Ответ 2

Когда DLL или EXE не загружаются, так как в этом случае Depends.exe очень удобно - он отображает полное дерево зависимостей EXE/DLL, выделяя то, что не может быть загружено или оно отсутствует.