DllNotFoundException, но DLL есть

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

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

однако, вот что странно. Dll там, в том же месте, что и всегда. Ahd на самом деле файл.Существует ("PsyREG.dll") возвращает true, и я дважды проверил, и это точно так же, как предоставленный источник c# импортирует его, например [DllImport("PsyREG.файл DLL.])"

какие идеи?

5 ответов


вероятно, эта dll имеет некоторые зависимости, которые они arent registred или arent в той же папке вашего приложения.


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


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


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

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

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


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

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

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