Loadlibrary failed with error 193 1 не является приложением win32
'> Как узнать откуда LoadLibrary неудачно пытался загрузить DLL ?
В своём win32-приложении хочу использовать некую стороннюю но широкоизвестную DLL. Винда 64-битная…
Итог - ошибка 193 (0xC1) ERROR_BAD_EXE_FORMAT - «%1 is not a valid Win32 application.»
Но как мне в своей программе узнать где лежит эта 64-битная DLL которая вызвала ошибку в LoadLibrary() .
Если LoadLibrary() загрузил нормальную 32-битную DLL - то её файл можно найти через GetModuleFileName(). А если DLL не загрузилась - то как искать?
PS. причём в Program Files валяется и несколько 32-битных версий этой DLL, но LoadLibrary до них не доходит натыкаясь на 64-битную версию.
PS. причём в Program Files валяется и несколько 32-битных версий этой DLL, но LoadLibrary до них не доходит натыкаясь на 64-битную версию.Тогда получается, что главная задача - обнаружить "правильную" dll
и использовать её.
Если сразу не удалось загрузить dll, тогда
можно просто устроить поиск файлов в конкретных директориях.
И попробовать все найденные варианты, используя полные пути.
Обрати внимание на третий параметр этой функции.
А что именно?
Я там пробовал DONT_RESOLVE_DLL_REFERENCES сделать (надеялся тогда система не поймёт что это win64-файл, я посмотрю путь, а потом уже вручную сделаю DllMainEntry) - но это не сработало, такая же ошибка ERROR_BAD_EXE_FORMAT сразу.
Варианты ограничивать поиск не подходят, цель именно узнать на какой DLL возникла проблема.
Почему не подходят? Что тебе мешает сделать то, что делает функция LoadLibrary? Она ищет в системных директориях подходящие библиотеки. Ты можешь ей это запретить, и сам поискать в этих дерикториях. На какой упадет с нужным тебе результатом, тот и выдавай.
Добавлено 01.02.20, 20:18
Напихать в массив стрингов системные директории, и потом в цикле просто идти по ним, формировать нужный путь к файлу, пытаться загружать - ловить ошибку. Анализировать ошибку. Выдавать результат. Не вижу проблемы. Ты ее сам выдумал.
Всем привет! Народ, подскажите, где, может обновление какое для винды надо скачать или что-то ещё. Установил корону, и выдаёт такую ошибку. Куда смотреть, что искать? Может кто решал когда этот вопрос? Винда 7, 64-битка, sp1
Всем привет! Народ, подскажите, где, может обновление какое для винды надо скачать или что-то ещё. Установил корону, и выдаёт такую ошибку. Куда смотреть, что искать? Может кто решал когда этот вопрос? Винда 7, 64-битка, sp1
у тебя плагин походу сломанный ну или он для 32 х разрядной системы,удали его или обнови,путь к нему у тебя есть.
egor98, нет не помогает. Файл не сломанный и он ставится по умолчанию для 64x. Менял на файл с компа на котором корона работает, ничего не помогает. В гугле ничего конкретного не могу найти. mihasan обновы для винды не хватает, установка этой обновы вручную еще та боль, самый лучший выход гоу ту вин 10, на хелпере короновском есть статья про это, поисчи, а лучше перебей винду не трать времяlarrs не, это не вариант, много нашёл инфы по этой ошибке, у людей и 8 и 10 и не помогает. Кто-то антивирус снёс и помогло. В моём случае не получается.
Знать бы какие конкретно обновы нужны.
larrs не, это не вариант, много нашёл инфы по этой ошибке, у людей и 8 и 10 и не помогает. Кто-то антивирус снёс и помогло. В моём случае не получается.
Знать бы какие конкретно обновы нужны.
апдейт олл и все
Добрый! вам удалось тогда решить эту проблему? У меня аналогичная проблема
Добрый день. В 3д Макс 2020 появилась подобная ошибка после запуска программы CheckDisk. Ревизия показала, что данный плагин не работал корректно с момента установки 3д Макса.
Плагин был мною удалён и перемещён в отдельную папку для "истории". Всё работает корректно.
Было время и я нашла ещё один вариант, чтобы сохранить плагин и убрать ошибку: идём в панель управления программы, находим 3дМакс 2020, выбираем "Удалить" - появится окно с предложением Удалить или Реинсталировать - выбираем Реинсталировать. По завершению - плагины на местах, всё работает, ошибки не выдаёт.
Ошибка Minecraft LoadLibrary с ошибкой 193:% 1 не является допустимым приложением Win32
Я застрял в том, почему я не могу загрузить свой dll "интерфейс" с помощью LoadLibrary. Кажется, что при загрузке зависимости происходит сбой, но я не уверен, почему.
А вот вывод снимков загрузчика gflags (x86):
Как мне решить эту проблему?
Любые предложения будут ценны. Большое спасибо.
p.s. Вот результат работы обходчика зависимостей:
p.p.s. вот скриншот, показывающий, что мои библиотеки DLL x86:
p.p.p.s. вот входы компоновщика для interfac.dll:
Редактировать. Вот результат dumpbin:
Одно вероятное объяснение ERROR_BAD_EXE_FORMAT ошибка от LoadLibrary в том, что INTERFAC.DLL был связан с PCDLRN.LIB библиотека импорта, которая объявляет PCDLRN экспорт, но PCDLRN.EXE обнаруженный во время выполнения не имеет таблицы экспорта.
В gflags (x86)'s loader snaps показывает, что ошибка возникает при загрузке PCDLRN.EXE , в частности, при разрешении таблицы импорта INTERFAC.DLL :
Положение дел 0xc000007b это STATUS_INVALID_IMAGE_FORMAT:
% hs либо не предназначен для работы в Windows, либо содержит ошибку. Попробуйте снова установить программу с исходного установочного носителя или обратитесь за поддержкой к системному администратору или поставщику программного обеспечения.
NTSTATUS STATUS_INVALID_IMAGE_FORMAT сопоставляется с кодом ошибки Win32 ERROR_BAD_EXE_FORMAT согласно ИНФОРМАЦИИ: сопоставление кодов ошибок состояния NT с кодами ошибок Win32.
Мне удалось продублировать тот же ERROR_BAD_EXE_FORMAT с макетом данного сценария: ссылка INTERFAC.DLL к PCDLRN.LIB который объявляет экспортируемый foo , затем подставьте PCDLRN.EXE без таблицы экспорта и, наконец, попытаться LoadLibrary INTERFAC.DLL .
редактировать: Хотя то, что ниже имеет смысл, на самом деле неверно. Я сохраняю его здесь только для справки, но могу удалить ответ позже.
Однако обратите внимание, что (по крайней мере, в Windows 10, которую я использовал для проверки), даже если информация о перемещении доступна в файле, если модуль не является DLL, он не применяется, поэтому, даже если вы не получили эту ошибку, если только ваш INTERFAC.DLL применяет перемещения к PCLDRN.exe после его загрузки, попытка его использования может где-то сломаться.
С выводом снимков загрузчика ситуация мне кажется очевидной.
После того, как файл найден, загрузчик выводит следующие данные (строки я пронумеровал):
LdrpMapViewOfSection возвращает код ошибки (0x40000003) в строке 3, что вызывает выгрузку модуля (строка 4), а затем LdrpMapViewOfSection с звонящий - LdrpFindOrMapDll - переводит код ошибки в 0xc000007b (STATUS_INVALID_IMAGE_FORMAT).
Но ошибка, которая привела к сбою загрузки, была 0x40000003 - STATUS_IMAGE_NOT_AT_BASE . Описание этого NTSTATUS:
Файл изображения не может быть отображен по адресу, указанному в файле изображения. Для этого образа необходимо выполнить локальные исправления.
(Источник: NTSTATUS Values)
По умолчанию EXE-файлы не содержат информации о перемещении (как упоминалось в комментариях). Обычно это не проблема, поскольку адресное пространство довольно свободно, когда в него загружается EXE. Но ваше адресное пространство не бесплатное. Что еще хуже, все EXE-файлы, скомпилированные Visual C ++, по умолчанию имеют один и тот же базовый адрес:
Параметр / BASE устанавливает базовый адрес для программы, переопределяя местоположение по умолчанию для файла .exe или DLL. Базовый адрес по умолчанию для файла .exe - 0x400000 для 32-битных изображений или 0x140000000 для 64-битных изображений. Для библиотеки DLL базовый адрес по умолчанию - 0x10000000 для 32-битных изображений или 0x180000000 для 64-битных изображений.
(Источник: Параметры компоновщика: / BASE (базовый адрес))
Вероятно, у вас такая ситуация. CNCServer.exe уже занимает 0x400000, и это единственное место, куда может пойти PCDLRN.exe. LdrpMapViewOfSection не может сопоставить PCDLRN.exe с 0x400000, потому что он не бесплатный и не может сопоставить в другом месте, потому что нет информации о перемещении.
И оттуда он поднимается по стеку вызовов и изменяет ошибку, но не основную проблему. Это отсутствие информации о переселении.
Сегодня хочу рассказать о распространённой проблеме, возникающей у пользователей с операционной системой Windows: Программа не является приложением Win32.
Что такое Win32 и что значит «Не является приложением»
Если у вас возникла ошибка подобного рода, то не стоит пугаться, а нужно сразу же пробовать решить проблему. Начнем с того, что появляется она по разным причинам. Допустим, что у нас есть Windows 8 или Windows 7 64-битная, все равно, такая система будет поддерживать приложения, которые рассчитаны на 32-х битные системы. А вот если программа не соответствует нужной архитектуре, то тут уже проблема.
Программа могла быть создана в другой ОС, например, в Linux, и как раз для нее предназначена, либо же, есть нехватка необходимых файлов, а также, эти самые файлы повреждены. Также, немаловажную роль могут играть и вирусы, стоит проверить компьютер антивирусом.
Программа не только может быть предназначена для другой операционной системы, но и являться мусором и даже вирусом. Но такое можно подхватить только на непроверенных источниках. Всегда перед скачиванием смотрите на комментарии, дизайн сайта, его предназначение. Если источник безопасный, то подозрений вызывать не будет.
Для запуска приложений, не предназначенных для Windows, можно использовать эмуляторы, создающие виртуальную среду определенной ОС, будь это MacOS или Android.
Есть еще виртуальные машины, например, VirtualBox, позволяющие установить любую операционную систему внутри песочницы. Грубо говоря, вы можете из-под Windows пользоваться другими системами без последствий.
Если вы успешно распаковали программу и запускаете установщик, и появляется данная ошибка, то стоит попробовать скачать ее из другого источника. Если вы ее успешно установили, но при запуске возникает ошибка, то удалите ее, а потом установите заново. Банальные советы, но могут помочь, так что, начинаем с самого простого.
Если снова ничего не помогло, то попробуйте найти эту программу для той ОС, которая у вас стоит. Обязательно смотрите в описании программы, какие ОС она поддерживает. А еще ознакомьтесь с отзывами, если таковые имеются.
Запуск в режиме совместимости на Windows 10
Можно попробовать запустить программу в режиме совместимости, для этого нажмите по значку приложения ПКМ и выберите «Свойства», потом перейдите во вкладку «Совместимость» и выберите «Запускать программу в режиме совместимости» и выберите из списка, например, более раннюю ОС.
Отсутствуют компоненты Net Framework, Microsoft Visual C++
Чтобы узнать, какие версии Net Framework уже установлены в системе Widows нужно открыть панель управления, затем перейти в раздел «Программы и компоненты». Далее перейдем по ссылке слева «Включение или отключение компонентов Windows».
Там вы увидите все версии нужных вам компонентов.
Попробуйте проверить Windows на наличие обновлений, чаще всего там присутствуют обновления NET Framework.
Обновлять и устанавливать нужно не только ту платформу, которую я указал, это относится и к Java или Microsoft Visual C++. Вот собственно и все. Надеюсь, что вы решили данную проблему.
Изменение данных в реестре исправит ошибку win32 приложения
Чтобы попасть в реестр нужно выполнить следующие действия:
Для исправления проблемы можно скачать готовый Win32.Reg файл и просто его запустить.
Загружаемый файл Win32 не скачан – проверяем Хеш-суммы
Нередки случаи, когда загрузка файла через браузер или торрент прерывается. В описании закачки указано, что файл успешно скачан, но это не может быть так. В лучшем случае программа установится, но не запустится, поскольку не хватает важных компонентов для ее работы.
Если игр или программа выдает ошибку, что приложение не является win32, то лучше закачать ее из другого источника.
Чтобы убедиться в целостности скачанных файлов существует алгоритм Хэш-сумм. Для каждого файла он уникальный и имеет размер 32 символа – буквы, цифры. Если один байт в файле изменен, например, из-за не полной загрузки или повреждения данных, то хэш сумма будет отличаться. По-другому хэш сумма называется контрольной суммой.
Итак, на многих сайтах и торрент трекерах, откуда идет загрузка файлов имеется подробное описание и контрольные суммы файлов. После скачивания вы можете сравнить хэши на сайте и с помощью специальной программы под Windows. Такие программы могут проверять сразу несколько алгоритмов контрольных сумм: SHA1, MD5, CRC и другие.
Для проверки и сравнения контрольных сумм вы можете использовать расширение для проводника – HashTab. Инструмент проверки будет находится в свойствах каждого файла на вкладке «Хеш-суммы файлов».
Если нет возможности установить расширение, скачайте программу проводник – Total Commander. Там выберите программу или архив из встроенного проводника, выберите его и нажмите на вкладку «Файл», затем жмем по пункту «Посчитать CRC-суммы (CRC32, MD5, SHA1)».
Самый простой способ решить проблему с недокачанной или повреждённой программой – скачать ее из другого источника.
Файл Win32 является вирусом или поврежден антивирусом
Для проверки файлов можно использовать антивирус, но если вирус все же найден, то антивирусное ПО попытается его вылечить. К сожалению, попытка лечения вирусного файла часто заканчивается неудачей. Почему так происходит? А дело в том, что скачанный файл может быть взломанным, пиратским или в простонародье – крякнутым. Программы или игры, имеющие кряк или, так называемые, файлы таблетки для лечения от лицензии быстро устраняются антивирусами.
Выход здесь только один – отключить временно антивирус, установить и запустить программу. Но делайте это очень осторожно. Устанавливайте приложение только в том случае, если доверяете источнику.
Для проверки системы на вирусы следует использовать не только встроенный программный антивирус, но и специальные одноразовые программы – AVZ, Kaspersky Virus Removal Tool, Dr. Web Cureit.
Если не является приложением Win32 на Windows XP
Многие еще работают на старой доброй Windows XP и ошибки там есть, которые не дают запустить нужную программу. Самая стандартные причины, которые могли привести к ошибке Win32 – поврежденная программа / архив или сбой в системе. Для устранение первой ошибки достаточно скачать приложение из другого источника. Решение второй причины достигается обычной перезагрузкой ОС.
Следующие причины могут быть следующими конкретно на Windows XP.
Итоги
( 5 оценок, среднее 5 из 5 )а на Windows xp win32.reg работает?
ого такие люди ещё есть, у самого windows xp )))
По ссылке win32.reg ошибка 404!! Где бы его качнуть?))
А что делать когда на windows xp выдаёт такую ошибку?
Да ,да у меня в 2018 году xp.
А во время выбора режима совместимости есть только 95 и 2000.
Ну это конечно логично ,ибо когда комп собирался других версий ещё не было.
Подскажите.что делать ,ибо когда я качаю с других сайтов всё равно выдаёт эту ошибку.
Тот же вопрос. При запуске игр рассчитанных на новые ОС, мой ХР выдаёт такую ошибку, хотелось бы знать какую нибудь лазейку, что бы запустить.
И да, сейчас 2018 и у меня тоже ХР. Это самая прекрасная ОС, лучшая из лучших, во всём мире)) и менять на другую категорически не хочу.
setup.exe не является приложением win32 windows xp вот такая ошибка у меня возникла при запуске скриншотера. И помогла мне переустановка этого приложения, но только скачал я его уже с торрента на другом ресурсе и установил, запустил и все заработало. Видимо файл битый был, и такое бывает.
Спасибо очень помогло,от души бро
не получилос сукаааааааааааааааааааааааааааа
Спасибо очень помогла фишка с решением проблемы разъебал ноут, потекла плазма
Читайте также: