Невозможно запустить программу на C, скомпилированную с MinGW Dev-C ++ в 64-битной Vista - PullRequest
8 голосов
/ 22 сентября 2011

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

Однако, когда я запустил код, я получил следующую ошибку:

Неподдерживаемое 16-битное приложение

Программа или функция "\??\C:\Dev-Cpp\gcc.exe" не могут запускаться или запускаться из-за несовместимости с 64-разрядными версиями Windows.Обратитесь к поставщику программного обеспечения, чтобы узнать, доступна ли 64-разрядная версия, совместимая с Windows.

Это проблема с компиляцией кода C с использованием компилятора C ++?

Ответы [ 5 ]

6 голосов
/ 22 сентября 2011

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

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

См. cygwin , MingGW ,или Visual Studio Express .

4 голосов
/ 01 февраля 2014

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

> gcc --help

...

-c Compile and assemble, but do not link

1 голос
/ 01 апреля 2015

У меня была похожая проблема, и именно ответ msiemens подсказал мне ее решить.Это не относится к версии MinGW.Просто мой .exe-файл на самом деле не был исполняемым.

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

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

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

Для компиляции и компоновки я использовал (как указано Alejandro):

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

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

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

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

0 голосов
/ 20 августа 2018

У меня была та же ошибка при использовании Notepad ++, я нашел ошибку, которую сделал. Я пытался создать исполняемый файл из файла заголовка.

Файл должен быть сохранен как file.cpp или file.c вместо file.hpp или file.h

Я также переключал языки, однако с C на C ++

0 голосов
/ 29 мая 2013

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

Под компиляцией вручную я имею в виду, например, для C ++:

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

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

...