Не удалось запустить программу или компонент из-за несовместимости с 64 разрядной

Несколько дней назад я начал программировать с C после программирования на С++, однако моя 64-битная машина Windows Vista не смогла создать проект C. Я перекомпилировал код с компилятором MinGW Dev-С++ без проблем. Однако, когда я запустил код, я получил следующую ошибку:

Неподдерживаемое 16-разрядное приложение Программа или функция «??C:Dev-Cppgcc.exe» не может запускаться или запускаться из-за несовместимости с 64-разрядными версиями Windows. Обратитесь к поставщику программного обеспечения, чтобы узнать, доступна ли версия с 64-разрядной версией Windows.

Это проблема с компиляцией кода C с использованием компилятора С++?
Sheldon Allen 22 сен. 2011, в 00:12
Поделиться

Какое именно сообщение об ошибке, какой компилятор вы используете и на какой платформе вы находитесь?

user142019 21 сен. 2011, в 21:40
А какой компилятор или IDE вы используете?
duskwuff 21 сен. 2011, в 21:41

просто чтобы прояснить это, вы можете скомпилировать C для 64-битной системы. Теперь, что компилятор и сообщение об ошибке?

Неподдерживаемое 16-разрядное приложение

Karoly Horvath 21 сен. 2011, в 21:42

Судя по добавленной вами ошибке, она не имеет ничего общего с вашим кодом — ваша система не любит ваш двоичный файл gcc.exe.

mah 21 сен. 2011, в 21:53
У меня такая же проблема с gcc (g ++) 4.5.2. Когда я пытаюсь скомпилировать код с OpenMpi, я всегда
webas2 27 сен. 2011, в 10:37
Рассматривали ли вы установить какой-либо дистрибутив Linux. Они очень дружелюбны к разработчикам

Basile Starynkevitch 20 авг. 2018, в 19:04
Показать ещё 4 комментария
Поделиться:
windows-vista

4 ответа

Лучший ответ

Ошибка, которую вы видите, — это использование античного (как в 16-разрядной версии Windows 3.1) программного обеспечения, которое Windows 64-бит не обеспечивает обратной совместимости. Это не имеет ничего общего с C или С++, просто очень старым компилятором.

Вы можете либо установить Windows 7 с XP-mode, что обеспечивает виртуальную 32-разрядную машину XP, которая работает практически без проблем под управлением Windows 7 или другого 32-разрядного решения для виртуализации или загружает более новую версию gcc.exe или какой-либо другой компилятор, которому менее 20 лет:

Eclipse 21 сен. 2011, в 23:05
Поделиться
VS даже не поддерживает C99, а Cygwin не предназначен для разработки.
user2384250 29 май 2013, в 18:55

Eclipse 29 май 2013, в 21:26

Вы бы порекомендовали кому-то разрабатывать на C виртуальную машину, когда ваша ОС получила действительно хороший компилятор (MinGW)? Также вы заботитесь о том, чтобы OP был новичком, но вы предлагаете только 1 хороший компилятор, на мой взгляд, есть QtCreator, который будет лучше для новичка в любом сценарии qt-project.org/downloads#qt-creator .

Читайте также:
Какой инсталлятор лучше для удаления программ

user2384250 30 май 2013, в 07:21
Показать ещё 1 комментарий

Я получил то же сообщение об ошибке при случайном добавлении переключателя -c , который сообщает компилятору не связывать исполняемый файл. Снятие переключателя заставило его снова работать.

НЕПОДДЕРЖИВАЕМОЕ 16-РАЗРЯДНОЕ ПРИЛОЖЕНИЕ. Решение проблемы)

> gcc —help

.

-c Compile and assemble, but do not link

msiemens 01 фев. 2014, в 00:10
Поделиться
Я сделал ту же ошибку.
Lei Yang 21 авг.

2017, в 03:06

У меня была аналогичная проблема, и это был ответ msiemens, который дал мне подсказку для его решения. Это не связано с версией MinGW. Просто мой файл .exe на самом деле не был исполняемым.

Я пытался скомпилировать и построить с помощью команды:

> g++ -c cpptest.cpp -o cpptest.exe

Но с -c, g++ просто компилируется без ссылки. В результате cpptest.exe представляет собой файл cpptest.o(двоичный файл объекта, но не исполняемый) с другим именем.

Для компиляции и ссылки я затем используется (как указано Алехандро):

> g++ cpptest.cpp -o cpptest.exe

Или в два этапа:

> g++ -c cpptest.cpp -o cpptest.o > g++ cpptest.o -o cpptest.exe

Они создают фактический исполняемый файл.

Miguel Muñoz 01 апр. 2015, в 09:49
Поделиться

Это какая-то проблема с Mingw. Проблема заключается не в том, что вы используете старый компилятор. Это случилось со мной с последней версией компиляторов Mingw. Я нашел обходное решение, которое может помочь некоторым людям. Эта проблема проявляется при создании моего проекта с помощью Makefile.

Если я создам его вручную с помощью командной строки, он отлично работает, результат .exe выполняется без проблем.

Компилируя вручную, я имею в виду, например, для С++:

c:mydir > g++ source1.cpp source2.cpp -o myprog.exe

Мое приложение было очень маленьким, всего несколько источников, необходимых для проверки некоторых изменений. Если у вас есть более сложное приложение с Makefile, это обходное решение, вероятно, вам не поможет.

Alejandro Dobniewski 29 май 2013, в 17:20
Поделиться

Ещё вопросы

Источник: overcoder.net

Почему не работает код, какие есть нюансы fasm?

Вроде все правильно указал. В чем может быть причина не работоспособности?

  • Вопрос задан более трёх лет назад
  • 613 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 2

А зачем у Вас вообще include ‘win32a.inc’ и .code, если Вы под DOS пишете. Там никаких WinAPI и секций кода и данных нет. А вот org 100h в начале не помешал бы. Хоть fasm и может компилировать под различные системы, но оформление кода всегда разное; в википедии есть примеры для каждой из систем.

Ответ написан более трёх лет назад
Нравится 1 8 комментариев

Konstantin18ko

Попробуйте набрать 100h вначале. Увидите ошибку.
Konstantin Malyarov: Взял свежий fasm с сайта, взял пример из википедии:

org 100h mov ah,9h mov dx,hello int 21h mov ah,8h int 21h int 20h hello db 13,10,»Hello, World!$»

скормил второго первому и получил com-файл. Проверил, работает без ошибок.

Читайте также:
Пресс программа самая эффективная

Konstantin18ko

none7: Выплывает окошко: Неподдерживаемое 16-разрядное приложение.
Не удалось запустить программу или компонент «??C:Userstest.com» из-за несовместимости с 64-разрядной версией Windows. Обратитесь к разработчику за версией программы, совместимой с 64-разрядной версией Windows.

Konstantin Malyarov: Ну так нельзя в 64-битной Windows запускать 16-битные приложения. Используйте DosBox или 32-битную Windows в виртуальной машине. По другому никак.

Konstantin18ko

none7: по этому и использую WinAPI, чтоб писать под 64.
Konstantin Malyarov: Это никак не связано. Вот так выглядит HelloWorld для x64:

; Example of 64-bit PE program format PE64 GUI entry start section ‘.text’ code readable executable start: sub rsp,8*5 ; reserve stack for API use and make stack dqword aligned xor r9d,r9d lea r8,[_caption] lea rdx,[_message] xor rcx,rcx call [MessageBoxW] mov ecx,eax call [ExitProcess] section ‘.const’ data readable _caption du ‘Win64 assembly program’,0 _message du ‘Hello, World!’,0 section ‘.idata’ import data readable dd 0,0,0,RVA kernel_name,RVA kernel_table dd 0,0,0,RVA user_name,RVA user_table dd 0,0,0,0,0 kernel_table: ExitProcess dq RVA _ExitProcess dq 0 user_table: MessageBoxW dq RVA _MessageBoxW dq 0 kernel_name db ‘KERNEL32.DLL’,0 user_name db ‘USER32.DLL’,0 _ExitProcess dw 0 db ‘ExitProcess’,0 _MessageBoxW dw 0 db ‘MessageBoxW’,0

Как видишь никаких int 21h тут нет, MessageBox и ExitProcess это WinAPI. И именно работа с ними называется использованием WinAPI, а не строчка include ‘win32a.inc’. А DOS-программы всегда 16-битные, в 32-битных системах они запускаются в эмуляторе. В 64-битных его вырезали под корень.

Konstantin18ko

none7: то есть int 21h урезан в х64 и я не смогу им пользоваться?
Просто в отладчике int 21h вызывает ошибку.
OllyDbg v2.00.01
Access violation when reading [FFFFFFFF] — Shift+Run/Step to pass exception to the program
Не хватает прав. Просто я не знаю как их расширить. Или это не реально?

Konstantin Malyarov: Правильно сказать вырезан напрочь. Никаких прерываний вообще нет, как и доступа к I/O портам, доступа к физической памяти, даже чтение и запись виртуальной памяти допускается лишь с позволения ядра ОС и естественно никакого доступа к BIOS. Все 32/64-битные приложения взаимодействуют с ОС лишь посредством вызова WinAPI так было начиная с Windows 2000. Тогда же появился эмулятор 16-битного режима и DOS под названием NTVDM, 32/64-битные приложения же никогда не имели доступа к прерываниям DOS/BIOS.

Источник: qna.habr.com

Неподдерживаемое 16-разрядное приложение

- - - - -

  • Posters
  • 7 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 13:59

    Не удалось запустить программу или компонент «??С:Program FilesDrWebtips.exe» из-за несовместимости с 64 разрядной версией Windows. Обратитесь к разработчику программного обеспечения за версией программы, совместимой с 64-разрядной версией Windows.

    1. все работает как обычно (DrWeb в трее)

    2. увести компьютер в hibernate

    3. включить компьютер

    4. компьютер загрузится и Windows покажет экран блокировки

    5. ввести пароль и войти в Windows

    Читайте также:
    Вредоносная программа способная нанести ущерб данным на компьютере или вывести его из строя

    6. Windows покажет рабочий стол, а на нём будет такое окно с таким текстом

    Воспроизводится не всегда.

    Версия программы: Dr.Web Security Space 11.0. Последнее обновление: 2016-11-14 13:44

    Прикрепленные файлы:

    • DrWeb Неподдерживаемое 16 разрядное приложение.png12,88К 0 Скачано раз

    #2 Konstantin Yudin

    Konstantin Yudin

  • Dr.Web Staff
  • 19 462 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 14:45

    пока висит это окно процесс tips.exe есть? если да, можете снять дамп?
    и проверьте сам файл, в его свойствах есть подпись. возможно он поврежден

    With best regards, Konstantin Yudin
    Doctor Web, Ltd.

    #3 Fishart

  • Posters
  • 7 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 15:08

    Проверил цифровую подпись. Выдаёт «Цифровая подпись действительна» (для sha1 и sha256). Фото ниже приложено.

    Насколько помню, процесса нету, когда окно весит. Когда в следующий раз воспроизведётся, то «сфотографирую» через Sysinternals Process Explorer.

    По моим догадкам, окно всплывает, когда DrWeb «хочет» показать уведомление о том, что ознакомительная лицензия, но компьютер заблокирован после возврата из hibernate.

    Прикрепленные файлы:

    • Tips.exe цифровая подпись.png48,01К 0 Скачано раз

    #4 Fishart

  • Posters
  • 7 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 15:14

    Ещё, на всякий случай, проверил, копируется ли папка «C:Program FilesDrWeb» в другое место. Папка скопировалась успешно.

    #5 phantom83

  • Posters
  • 702 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 15:17

    вот рекомендация по снятию дампа от Дианы

    #6 Konstantin Yudin

    Konstantin Yudin

  • Dr.Web Staff
  • 19 462 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 15:26

    >По моим догадкам, окно всплывает, когда DrWeb «хочет» показать уведомление о том, что ознакомительная лицензия

    нет, этот процесс показывает советы в трее. но похоже он стартует как то странно. система не видит в нем валидного бинаря. рока слабо представляю как это может быть. может подкачка с диска еще не работает?
    а если выключить самозащиту, и повторить сценарий, будет воспроизводится?

    With best regards, Konstantin Yudin
    Doctor Web, Ltd.

    #7 Fishart

  • Posters
  • 7 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 16:03

    На диске свободно около 100 гигабайт. Настройки файла подкачки:

    Прикрепленные файлы:

    #8 Fishart

  • Posters
  • 7 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 16:05

    а если выключить самозащиту, и повторить сценарий, будет воспроизводится?

    А как её отключить?

    #9 Dmitry_rus

    Dmitry_rus

  • Helpers
  • 3 461 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 16:13

    Клик по пауку в трее — открыть замок — Настройки — Основные — Самозащита

    #10 Konstantin Yudin

    Konstantin Yudin

  • Dr.Web Staff
  • 19 462 Сообщений:
  • Отправлено 14 Ноябрь 2016 — 16:34

    На диске свободно около 100 гигабайт. Настройки файла подкачки:

    не, я не о том. например самозащита не дала обработать page fault или еще чего по хуже.
    With best regards, Konstantin Yudin
    Doctor Web, Ltd.

    #11 Fishart

  • Posters
  • 7 Сообщений:
  • Отправлено 22 Ноябрь 2016 — 03:50

    Воспроизвелось. Куда слать?

    В общий доступ выкладывать не хочется.

    Источник: forum.drweb.com

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