Ошибка «Исключение из hresult: 0x8007000B»: как исправить?

Некоторые из разработчиков программного обеспечения в различных версия интегрированной среды разработки Visual Studio могут столкнуться с ошибкой 0x8007000B. В сообщении ошибки можно увидеть следующую информацию: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B).

Из множественных сообщений на тематических форумах стало понятно, что код ошибки 0x8007000B может возникать по десяткам причин и при огромном количестве различных обстоятельств. Например, код ошибки 0x8007000B можно видеть при загрузке приложений, которых были скомпилированы для 32-битных систем, но запускаются на 64-битных операционных системах. Также эту ошибку можно увидеть при загрузке в проект каких-то необходимых вам динамических библиотек(dll). Например, некоторые пользователи жаловались на ошибку exception from hresult 0x8007000b при загрузке в проект динамической библиотеки из asp.net 3.5.

Исправляем код ошибки 0x8007000B на Windows 7/8/10

Так что за ошибка 0x8007000B? В чем, собственно, ее причина? К сожалению, как уже было сказано ранее, их может быть куча. Давайте рассмотрим решение ошибки 0x8007000B на самом распространенном примере, если исходить из сообщений на тематических форумах.

Допустим, вы разработали небольшое приложение, например, в Visual Studio Express, которому необходимо использовать внешнюю динамически подключаемую библиотеку. Приложение и внешнее DLL были скомпилированы на 32-битной платформе.

Вы попытались передать свою программу другому пользователю либо же перенести на другую машину под 64-битной архитектурой, но при попытке запустить ее высвечивается ошибка «Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)».

Что по сути происходит: финальная программа, перенесенная на другой ПК с иной архитектурой, пытается обратиться к функции из внешнего DLL-файла впервые, после чего появляется вышеуказанная ошибка. Возможно, вы уже пытались запустить тестовый образец программы на 64-битной машине и все получилось, а это значит, что DLL способен на ней работать.

Причина ошибки HRESULT: 0x8007000B заключается в том, что ваш DLL-файл, вероятно, был скомпилирован для работы на 32-битной платформе. При компиляции .Net без указания определенной платформы, приложение будет работать в 32-х или 64-битном режиме, основываясь на машине, на которой оно работает. Если приложение работает в 64-битном режиме, то вы можете обращаться только к 64-битным DLL-файлам.

Пройдите в настройки проекта и измените целевую платформу с «Любой ЦП» на «x86». Поступив таким образом, ваше приложение будет работать в 32-битном режиме на любой машине, а также обращаться к 32-битному DLL. Сделав это, вы сможете избавиться от ошибки 0x8007000B.

guest
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии