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

时间:2011-09-21 21:38:39

标签: c++ c windows-vista 64-bit mingw

几天前,我在用C ++编程后开始用C编程,但是,我的Windows Vista 64bit机器无法创建C项目。我使用MinGW Dev-C ++编译器重新编译代码没有问题。

然而,当我运行代码时,我收到以下错误:

  

不支持的16位应用程序

     

由于与64位版本的Windows不兼容,程序或功能"\??\C:\Dev-Cpp\gcc.exe"无法启动或运行。请与软件供应商联系,询问是否有64位Windows兼容版本。

这是使用C ++编译器编译C代码的问题吗?

5 个答案:

答案 0 :(得分:6)

您看到的错误来自于使用古老的(如在16位Windows 3.1时代)软件,Windows 64位不提供向后兼容性。这与C或C ++无关,只是一个非常古老的编译器。

您可以安装带有XP模式的Windows 7,它提供在Windows 7下几乎无缝运行的虚拟32位XP机器,或其他一些32位虚拟化解决方案或下载更新版本的gcc.exe或其他一些编译器不到20年:

请参阅cygwinMingGWVisual Studio Express

答案 1 :(得分:4)

我在意外添加-c开关时收到相同的错误消息,该开关告诉编译器不链接可执行文件。卸下开关使其再次工作。

  

> gcc --help

     

...

     

-c Compile and assemble, but do not link

答案 2 :(得分: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

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

答案 3 :(得分:0)

这是Mingw的某种问题。问题不在于您使用的是旧编译器。它发生在最后一个版本的Mingw编译器上。 我找到了一个可能对某些人有帮助的解决方法。使用Makefile构建项目时会出现此问题。如果我通过命令行手动构建它,它工作正常,生成的.exe执行没有问题。

通过手动编译我的意思是例如c ++:

  

C:\ MYDIR> g ++ source1.cpp source2.cpp -o myprog.exe

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

答案 4 :(得分:0)

在使用Notepad ++时,我遇到了相同的错误,我发现了自己犯的错误。我试图从头文件创建可执行文件。

该文件需要另存为file.cpp或file.c而不是file.hpp或file.h

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