Невозможно загрузить DLL 'mydll.dll': указанный модуль не найден - PullRequest
4 голосов
/ 19 ноября 2011

На моем ноутбуке, где я разрабатываю приложение WPF, все работает нормально, отлаживаю и запускаю приложение .exe.

Мое приложение использует встроенную библиотеку DLL, для решения проблемы со ссылками я добавляю библиотеку DLL в папку bin / debug (release).Я обращаюсь к нему с помощью DllImport следующим образом:

[DllImport("xptodll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int LDA_About();

Проблема заключается в том, что при попытке запустить приложение .exe на другом ПК, когда мне нужно получить доступ к DLL, происходит сбой.Я делаю дескриптор для регистрации любых необработанных исключений, и появляется следующая ошибка:

Невозможно загрузить DLL 'xptodll.dll': указанный модуль не найден.Исключение из HRESULT: 0x8007007E)

В каталоге bin / debug есть файл xptodll.dll и файлы приложений: .exe, .application, .exe.config, .exe.manifest, .pdb.

Может быть, это важно, xptodll.dll взаимодействует с оборудованием, но почему бы не иметь одинаковое поведение на обеих машинах?

Ответы [ 2 ]

15 голосов
/ 19 ноября 2011

Возможно, существует какая-то дальнейшая зависимость, которая не работает.Я предполагаю, что xptodll.dll сам имеет зависимости от других библиотек, которые отсутствуют на сбойном компьютере.Документация xptodll.dll должна объяснить, какие зависимости нужны.Если в документации не указано, чего не хватает, вы можете самостоятельно диагностировать проблему, используя Dependency Walker .

3 голосов
/ 28 февраля 2013

Другая проблема может быть (помимо всего этого «поместить DLL в правильном месте»), если, например, DLL была создана с помощью Visual Studio, например.Visual Studio 2012, также должен быть установлен VCRedistributable для 64-битных (vcredist_x64.exe), что обеспечивается Visual Studio.

...