«Приложение не удалось правильно инициализировать (0xc000007b).» - PullRequest
3 голосов
/ 31 июля 2010

Я получаю эту ошибку, когда пытаюсь запустить программу, написанную на C ++. Он отлично работает на моем другом компьютере (XP SP3 32bit), но не на моей 64-битной версии Windows 7. Когда я запускаю Dependency Walker в программе, он сообщает, что IESHIMS.dll отсутствует, однако он находится в папке Internet Explorer 32- и 64-разрядной версии.

Может ли кто-нибудь помочь мне с этим?

1 Ответ

18 голосов
/ 31 июля 2010

Код ошибки: STATUS_INVALID_IMAGE_FORMAT, " Mumble либо не предназначен для работы в Windows, либо содержит ошибку. Попробуйте установить программу заново с использованием исходного установочного носителя или обратитесь к системному администратору или поставщику программного обеспечения для поддержки. "

Что немного устарело, возможно, для 64-битной версии Windows, вероятность того, что ваша 32-битная программа пытается загрузить 64-битную DLL, равна 90%. Windows многое делает, чтобы этого не случилось. Виртуализация файловой системы гарантирует, что загрузки DLL из c: \ windows \ system32 перенаправляются в c: \ windows \ syswow64, дом 32-битных DLL. Виртуализация реестра гарантирует, что COM-серверы сопоставляются с разрядностью COM-клиента.

Есть кое-что, что вы делаете, чтобы обойти эти контрмеры. Может быть, вы использовали SetDllDirectory (). Или вы скопировали DLL в ту же папку, что и ваш EXE. Или вы надеетесь, что системная переменная окружения PATH поможет вашей программе найти правильную DLL. Что-то в этом роде, из вашего вопроса не ясно. В журнале событий Windows должна быть запись об этом (не уверен на 100%). Если ничего не помогает, утилита SysInternals ProcMon может показать вам, какой файл он пытается загрузить.

...