几天前,我在用C ++编程后开始用C编程,但是,我的Windows Vista 64bit机器无法创建C项目。我使用MinGW Dev-C ++编译器重新编译代码没有问题。
然而,当我运行代码时,我收到以下错误:
不支持的16位应用程序
由于与64位版本的Windows不兼容,程序或功能
"\??\C:\Dev-Cpp\gcc.exe"
无法启动或运行。请与软件供应商联系,询问是否有64位Windows兼容版本。
这是使用C ++编译器编译C代码的问题吗?
答案 0 :(得分:6)
您看到的错误来自于使用古老的(如在16位Windows 3.1时代)软件,Windows 64位不提供向后兼容性。这与C或C ++无关,只是一个非常古老的编译器。
您可以安装带有XP模式的Windows 7,它提供在Windows 7下几乎无缝运行的虚拟32位XP机器,或其他一些32位虚拟化解决方案或下载更新版本的gcc.exe或其他一些编译器不到20年:
答案 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 ++