Что означает ERROR_DLL_INIT_FAILED? - PullRequest
2 голосов
/ 17 ноября 2009

Я вижу следующее исключение в моем управляемом (C #) приложении, вызывающем неуправляемую сборку:

Caught: System.IO.FileLoadException 'Ошибка инициализации библиотеки динамической компоновки (DLL). (Исключение из HRESULT: 0x8007045A) '

Что означает этот HRESULT и с чего мне начать диагностировать это?

Ответы [ 3 ]

3 голосов
/ 19 сентября 2011

Я получал эту ошибку после обновления решения, которое было в VS 2008 с проектами, нацеленными на .NET Framework v2.0 до VS 2010 с целевым временем выполнения v 4.0. Исключение, которое я получал, было:

Не удалось загрузить файл или сборку 'XYZ.dll' или одну из ее зависимостей. Сбой процедуры инициализации библиотеки динамической компоновки (DLL). (Исключение из HRESULT: 0x8007045A) ":" XYZ.dll

Это было исправлено путем добавления следующего раздела в файл App.config проекта, установленного в качестве запуска:

<startup useLegacyV2RuntimeActivationPolicy="true">
   <supportedRuntime version="v2.0"/>
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
3 голосов
/ 17 ноября 2009

FileLoadException Class

Представляет ошибку, которая возникает, когда файл сборки найден, но не может быть загружен.

Исключение FileNotFoundException выдается, когда файл не загружается потому что это не может быть найдено. Если файл находится, но не может быть загружен из-за недостаточных разрешений, Выдается SecurityException.

FileLoadException имеет значение по умолчанию HRESULT из COR_E_FILELOAD, который имеет значение 0x80131621, но это не единственно возможный HRESULT.

Если ваш код не имеет Разрешение PathDiscovery, ошибка сообщение для этого исключения может только содержать имена файлов или каталогов вместо полностью определенных путей.

Цитируется прямо из MSDN:
текст ссылки

Обычно это просто вопрос возможности найти нужную библиотеку.

2 голосов
/ 17 ноября 2009

в качестве альтернативы DLL, которую вы пытаетесь загрузить, пытается загрузить отсутствующую DLL, проверьте с помощью DEPENDS.EXE в DLL.

...