DllNotFoundException, но DLL есть - PullRequest
       42

DllNotFoundException, но DLL есть

31 голосов
/ 07 августа 2009

Поэтому я использую SDK для аппаратного генератора случайных чисел, который предоставляет dll под названием PsyREG.dll для взаимодействия с ним, а также некоторый источник c # для использования методов из dll.

Это работало в прошлом, но почему-то перестало работать. Мои руки немного связаны, так как на данный момент у меня нет доступа к соответствующему устройству, поэтому я не могу попробовать много вещей ...

Однако, вот странная вещь. DLL там, там же, где всегда. На самом деле File.Exists ("PsyREG.dll") возвращает значение true, и я дважды проверил, и это точно так же, как его обеспечивает исходный источник c #, например. [DllImport ( "PsyREG.dll")].

Есть идеи?

Ответы [ 5 ]

39 голосов
/ 07 августа 2009

Вероятно, у этой dll есть некоторые зависимости, которые они не зарегистрированы или не находятся в той же папке вашего приложения.

8 голосов
/ 05 марта 2015

Открыть DLL на проблемной системе в http://www.dependencywalker.com/

1 голос
/ 20 марта 2017

Я столкнулся с этой проблемой и решил следующее:

Существует зависимость от msvcr90.dll, если вы компилируете в / MD. Попробуйте вместо этого скомпилировать код с / MT.

Project properties> C/C++> Code Generation> Runtime Library: /MT

1 голос
/ 07 августа 2009

Возможно, вам следует проверить, ожидаете ли вы версию конкретного продукта dll, и убедиться, что версии продукта по-прежнему совпадают правильно.

0 голосов
/ 16 февраля 2016

Я имел дело с тем же исключением в отношении одной из моих библиотек DLL (назовем это A). C # зависал, потому что утверждал, что не может найти эту DLL (A) (хотя он находился в той же папке, что и исполняемый файл).

Оказалось, что проблема была вызвана A зависимостью от другой DLL (назовите ее B). B не было в пути, поэтому A не мог загрузить его, когда это было нужно. Поскольку B требовалась целая куча других DLL, было решено добавить каталог B в переменную окружения PATH.

Интересно, как происходит сбой C # с ошибкой о том, что A не найден, когда на самом деле B не найден ...

...