Была сделана попытка загрузить программу имеющую неверный формат exception from hresult 0x8007000b

При поиске с кодом ошибки: 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, все переменные успешно проходят, за исключением одного

  1. Вопросы
  2. Dllimport
  3. Ошибка при попытке загрузить 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

    1. Исправлено: исключение неизвестного программного исключения (0xc06d007e) произошло в приложении
    2. Исключение из HRESULT Excel Ошибка: 0x800A03EC Ремонт
    3. Код ошибки: 0xe0434352 — в приложении возникла исключительная ситуация неизвестного программного обеспечения.
    4. Код ошибки 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru