При поиске с кодом ошибки: 0x8007000B — Это означало «Использование 32-разрядной библиотеки DLL в 64-разрядной системе», Но DLL — 64-разрядная dll. Как я попытался решить эту ошибку, изменив целевую платформу VS на «x86» и «x64» и установив свойство «Включить 32-разрядное приложение» IIS на «Истинный», Но получил ту же ошибку. Может ли кто-нибудь помочь обойти эту проблему.
спросил(а) 2013-06-03T15:28:00+04:00 10 лет, 1 месяц назад
добавить комментарий
пожаловаться
Код ошибки 0x8007000B — код ошибки COM, представляющий ошибку Win32 ERROR_BAD_FORMAT . Обычно, когда 32-разрядный процесс пытается загрузить 64-битную DLL, или наоборот, код ошибки — ERROR_BAD_EXE_FORMAT который будет отображаться как 0x800700C1 когда он будет ERROR_BAD_EXE_FORMAT в код ошибки COM. Поэтому я думаю, что проблема не в несоответствии 32/64 бит.
Наиболее вероятным объяснением является то, что DLL или одна из его зависимостей является коррумпированной. Чтобы отладить это, я бы устранил сложность IIS. У вас есть добавленные уровни p/invoke и IIS. Прежде всего убедитесь, что вы можете загрузить эту DLL из другой родной программы. Создайте 64-битное консольное приложение C++ в VS, которое делает следующее:
Error Publishing Application SQLite.Interop.dll (HRESULT:0x8007007E) Windows Forms C#
#include
#include
int main()
if (!LoadLibraryA(«D:\Application\Sampledll.dll»))
std::cout >
>
Посмотрите, что произойдет, когда вы запустите это. Если вы получите код ошибки, какое значение это? Это ERROR_BAD_FORMAT ? В этот момент я использую Dependency Walker в режиме Profile, чтобы попытаться выяснить, какая DLL является создателем проблем.
ответил(а) 2013-06-03T15:42:00+04:00 10 лет, 1 месяц назад
добавить комментарий
пожаловаться
Еще в рубрике
Установить dll Directory для Dllimport С#
Действительно ли «фиксированный» действительно гарантирует что-либо при передаче указателей (т.е. Int []) в DLL?
PInvoke char * в C DLL обрабатывается как String в С#. Ошибка с нулевыми символами
Повторный вызов dllimport для C dll в С# кажется медленным по сравнению с прямым С#
Другие вопросы
Вызов метода C в С# с помощью DllImport — попытка чтения или записи защищенной памяти
Отправка данных в LPT на Windows XP
Передача char * и struct в С# в С++ DLL, все переменные успешно проходят, за исключением одного
- Вопросы
- Dllimport
- Ошибка при попытке загрузить dll. Была сделана попытка загрузить программу с неправильным форматом. (Исключение из HRESULT: 0x8007000B)
Источник: progi.pro
Как исправить ошибку исключения HRESULT 0x8007000B
Код ошибки 0x8007000b указывает, что может быть проблема с вашими библиотеками Windows. Библиотеки Windows предоставит вам центральное место для управления файлами, распространяемыми на вашем компьютере, и сэкономит ваше время, сгруппировав все ваши файлы в одном месте, вместо того, чтобы выполнять поиск по ряду папок и каталогов.
HRESULT: 0x8007000B An attempt was made to load a program with an incorrect format. | Solved
Фотоальбом Windows Live использует вышеупомянутые библиотеки Windows, и если вы получаете эту ошибку, и приложение не запускается, это обычно означает, что есть проблема с библиотеками. Некоторые из содержащихся в них файлов могут быть повреждены, и вы не сможете открыть приложение, пока не решите их.
Если вы попытаетесь установить обновления на компьютер Windows с веб-сайта Центра обновления Windows или Центра обновления Майкрософт, вы также можете получить это сообщение об ошибке.
Если вы боретесь с этой проблемой, вы, вероятно, используете 64-разрядную ОС и 64-разрядный exe, который загружает 32-разрядные библиотеки DLL, или наоборот — 32-разрядную ОС, на которой 32-разрядный exe пытается загрузить 64-разрядный. битовые библиотеки. Для целей данной статьи мы предполагаем, что это предыдущий случай.
При установке приложений в Windows Phone 10 может также возникнуть ошибка, описывающая, что произошло что-то непредвиденное, и возвращающая код ошибки 0x8007000B. Ошибка также указывает, что может помочь ожидание или перезапуск устройства. К сожалению, ни одна из этих рекомендаций не решит вашу проблему.
Обновление за июнь 2023 г .:
Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows — нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:
- Шаг 1: Скачать PC Repair Выполнить> Изменить правила.
3. перейдите к следующим записям и удалите значение, если оно существует:*
HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services Tcpip Parameters NameServer = (оставить пустым)
*
HKEY_LOCAL_MACHINE SYSTEM ControlSet001 Services Tcpip Parameters NameServer =
(оставьте пустым)Восстановить библиотеки по умолчанию
Попробуйте восстановить библиотеки по умолчанию, как описано здесь:
- В проводнике Windows перейдите в «Библиотеки» и удалите изображения и видео (может также потребоваться удалить документы и музыку).
- В области навигации щелкните правой кнопкой мыши Библиотеки, затем выберите «Восстановить стандартные библиотеки» в контекстном меню.
Совет экспертов: Этот инструмент восстановления сканирует репозитории и заменяет поврежденные или отсутствующие файлы, если ни один из этих методов не сработал. Это хорошо работает в большинстве случаев, когда проблема связана с повреждением системы. Этот инструмент также оптимизирует вашу систему, чтобы максимизировать производительность. Его можно скачать по Щелчок Здесь
CCNA, веб-разработчик, ПК для устранения неполадок
Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.
Сообщение Просмотров: 1,113
- Исправлено: исключение неизвестного программного исключения (0xc06d007e) произошло в приложении
- Исключение из HRESULT Excel Ошибка: 0x800A03EC Ремонт
- Код ошибки: 0xe0434352 — в приложении возникла исключительная ситуация неизвестного программного обеспечения.
- Код ошибки 0xe0434352 — исключение неизвестного программного обеспечения произошло в приложении в расположении 0x77312c1a
Источник: windowsbulletin.com
Была сделана попытка загрузить программу имеющую неверный формат exception from hresult 0x8007000b
Коллеги помогите с такой проблемой.
Если программа на C#. Она вызывает функции С++ библиотеки ( обычная Win32 dll, не COM).
На рабочем компе где разрабатываю и стоит VS все работает отлично вызовы идут. И на WinXP и Windows 7.
Ставлю программу на другой чистый комп — методы dll не вызываются. Там стоит Windows Server Enterprise 64.
Выдаётся ошибка «Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)»
Подозреваю что проблема в компиляции библиотеки и основного проекта.
Библиотеку компилирую с параметром Win32, основной anyCPU.
Как сделать чтобы заработало?
Если меняю параметры компиляции у основного проекта на x86 то выдаёт другую ошибку
«Не удается загрузить DLL «NameLib.dll»: Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна. Дополнительные сведения содержатся в журнале событий приложений. (Исключение из HRESULT: 0x800736B1)»На всякий случай код импорта функций.
[DllImport(«NameLib.dll»)]
static public extern Int32 Connect(string Params, byte[] ErrorMsg);В самой библиотеки функция описана как
extern «C» __declspec(dllexport) int32 Connect(char *Params, char *ErrorMsg);
Что делаю не так?
Re: Как скомпилировать библиотеку для NET?
От: SuhanovSergey Дата: 27.08.10 12:07 Оценка: +1 Здравствуйте, ProgrammerG, Вы писали:
PG>Выдаётся ошибка «Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)»
Это потому что вы пытаетесь загрузить 32 битную dll в 64 битный процесс. Процесс получается 64 битным потому что вы указываете anyCPU, что фактически означает использовать разрядность операционной системы.PG>»Не удается загрузить DLL «NameLib.dll»: Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна. Дополнительные сведения содержатся в журнале событий приложений.
Это означает, что на этой чистой машине скорее всего не установлен VC++ Runtime.Что делать — компилить всё в конфигурации Win32 и ставить нужную версию рантайма при инсталляции.
Re[2]: Как скомпилировать библиотеку для NET?
От: ProgrammerG Дата: 27.08.10 14:29 Оценка: Здравствуйте, SuhanovSergey, Вы писали:
SS>Здравствуйте, ProgrammerG, Вы писали:
PG>>»Не удается загрузить DLL «NameLib.dll»: Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна. Дополнительные сведения содержатся в журнале событий приложений.
SS>Это означает, что на этой чистой машине скорее всего не установлен VC++ Runtime.Точно. Спасибо.
SS>Что делать — компилить всё в конфигурации Win32 и ставить нужную версию рантайма при инсталляции.
Поставил VC++ Runtime x86.
Перекомпилировал проект в x86 ( Win32 нету опции, но я так понимаю x86 это и есть 32). Так?
Но результат тот же.
«Не удается загрузить DLL «NameLib.dll»: Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна.»
Что ещё может быть?Re[3]: Как скомпилировать библиотеку для NET?
От: wety Дата: 27.08.10 14:45 Оценка: Здравствуйте, ProgrammerG, Вы писали:
Установи правильные флаги для скомпилированного приложения через corflags.exe.
Инструкция и причины возникновения ошибки тут.Re[3]: Как скомпилировать библиотеку для NET?
От: SuhanovSergey Дата: 27.08.10 14:45 Оценка: Здравствуйте, ProgrammerG, Вы писали:
PG>Перекомпилировал проект в x86 ( Win32 нету опции, но я так понимаю x86 это и есть 32). Так?
ТакPG>Но результат тот же.
PG>»Не удается загрузить DLL «NameLib.dll»: Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна.»
PG>Что ещё может быть?
Существуют разные версии рантайма. Надо смотреть, с какой именно линкутся ваша dll. Попробуйте поставить ещё эту версию.Re[4]: Как скомпилировать библиотеку для NET?
От: SuhanovSergey Дата: 27.08.10 14:48 Оценка: Здравствуйте, SuhanovSergey, Вы писали:
SS>Здравствуйте, ProgrammerG, Вы писали:
PG>>Перекомпилировал проект в x86 ( Win32 нету опции, но я так понимаю x86 это и есть 32). Так?
SS>ТакPG>>Но результат тот же.
PG>>»Не удается загрузить DLL «NameLib.dll»: Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна.»
PG>>Что ещё может быть?
SS>Существуют разные версии рантайма. Надо смотреть, с какой именно линкутся ваша dll. Попробуйте поставить ещё эту версию.Re[3]: Как скомпилировать библиотеку для NET?
Здравствуйте, ProgrammerG, Вы писали:
SS>>Что делать — компилить всё в конфигурации Win32 и ставить нужную версию рантайма при инсталляции.
PG>Поставил VC++ Runtime x86.
PG>Перекомпилировал проект в x86 ( Win32 нету опции, но я так понимаю x86 это и есть 32). Так?
PG>Но результат тот же.Поищите у себя или в интернете замечательную утилиту http://www.dependencywalker.com/ запустите её на проблемном компьюютере и откройте в ней проблемную сишную библиотееку — посмотрите,Ю все зи зависимости корректно загрузятся и если не все, то какие именно не загрузятся. Тогда будет разбираться гораздо проще.
Help will always be given at Hogwarts to those who ask for it.
Re[3]: Как скомпилировать библиотеку для NET?Здравствуйте, ProgrammerG, Вы писали:
PG>Что ещё может быть?
Так же проблема может быть с тем, что вы собюираете сишный проект в Debug-конфигурации, тогда как устанавливаемые рантаймы предоставляют релиз. Или собирайте релиз, или сами распространяйте дебажный рантайм (или отыщите инсталлятор для дебага — вроде где-то на майкрософте были).
Источник: www.rsdn.org