无法在64位Vista上运行使用MinGW Dev-C++编译的C程序

8
几天前,我从用C++编程转向用C编程。但是,我的Windows Vista 64位电脑无法创建C项目。我使用MinGW Dev-C ++编译器重新编译了代码,没有问题。
然而,当我运行代码时,我收到了以下错误:
“不支持的16位应用程序”
由于与64位Windows不兼容,程序或功能“\??\C:\Dev-Cpp\gcc.exe”无法启动或运行。请联系软件供应商询问是否有64位Windows兼容版本。
这是使用C++编译器编译C代码的问题吗?

请问您遇到了什么具体的错误信息?您使用的编译器是什么?您所在的平台是哪个? - user142019
你使用的编译器或IDE是什么? - user149341
1
只是为了明确,您可以为64位编译C。现在是编译器和错误信息是什么? - Karoly Horvath
根据您所粘贴的错误,与您的代码无关 -- 而是因为您的系统不喜欢您的gcc.exe二进制文件。 - mah
我在使用gcc (g++) 4.5.2时遇到了同样的问题。当我尝试使用OpenMpi编译代码时,我总是会遇到这个问题。 - webas2
你考虑过安装一些Linux发行版吗?它们非常适合开发者使用。 - Basile Starynkevitch
5个回答

7

当我不小心添加了-c开关告诉编译器不要链接可执行文件时,我得到了相同的错误消息。移除该开关后问题解决。

> gcc --help

...

-c 编译和汇编,但不链接


我犯了同样的错误。 - Lei Yang

6
你看到的错误是由于使用了一个古老的软件(例如16位Windows 3.1时代),而Windows 64位不支持向后兼容。这与C或C++无关,只是一个非常老的编译器。
你可以安装带有XP模式的Windows 7,在Windows 7下提供一个运行几乎无缝的虚拟32位XP机器,或者安装其他32位虚拟化解决方案,或者下载一个不到20年的较新版本的gcc.exe或其他编译器:
请参见cygwinMingGWVisual Studio Express

VS甚至不支持C99,而Cygwin也不适用于开发。 - user2384250
1
如果Sheldon正在使用16位编译器,那么C99支持肯定不是优先考虑的问题,因此在Windows上VS和其他任何东西一样好。我很好奇你为什么声称Cygwin不适用于开发? - Eclipse
你会建议某人在操作系统已经有一个非常好的编译器(MinGW)的情况下,使用虚拟机来开发C语言吗?此外,你关心OP是新手,但你只建议了一个好的编译器,在我看来,QtCreator在任何情况下都比这个更适合新手,可以在http://qt-project.org/downloads#qt-creator下载。 - user2384250

1
这是Mingw的某种问题。问题不是因为你正在使用旧编译器。我最近版本的Mingw编译器也遇到了这个问题。
我找到了一个解决方法,可能会对一些人有用。当使用Makefile构建我的项目时,出现了这个问题。如果我通过命令行手动构建它,它就可以正常工作,生成的 .exe 文件可以无问题执行。
手动编译我指的是例如c++:

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

我的应用程序非常小,只有几个源码需要测试一些更改。如果你有一个更复杂的应用程序带Makefile,这个解决方法可能不适用。

1

在使用Notepad++时,我遇到了同样的错误,后来发现是我犯了一个错误。我试图从头文件创建可执行文件。

这个文件需要保存为file.cpp或file.c而不是file.hpp或file.h

我也在切换语言,从C到C++


1
我有一个类似的问题,而正是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

这些内容创建实际的可执行文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接