C 不支持的16位应用程序

C 不支持的16位应用程序,c,exe,lcc,C,Exe,Lcc,我刚刚下载并安装了lcc64编译器。 为了测试它是否有效,我编译了这个程序 #include <stdio.h> int main(int argc, char *argv[]) { printf("test"); return 0; } #包括 intmain(intargc,char*argv[]){ printf(“测试”); 返回0; } 通过使用lcc64.exe Source.c-o prog.exe。 但是如果我尝试在控制台中启动程序prog.

我刚刚下载并安装了lcc64编译器。 为了测试它是否有效,我编译了这个程序

#include <stdio.h>

int main(int argc, char *argv[]) {      
    printf("test");
return 0;
}
#包括
intmain(intargc,char*argv[]){
printf(“测试”);
返回0;
}
通过使用
lcc64.exe Source.c-o prog.exe
。 但是如果我尝试在控制台中启动程序
prog.exe
, 弹出一个窗口,显示“不支持的16位应用程序”,“由于与64位版本的Windows不兼容,无法打开程序或功能“\??\C:\lcc\lcc\bin\prog.exe”


我做错了什么?

首先,我强烈建议您下载并使用项目页面上提供的for lcc

这里的问题是编译器不生成可执行文件,而是生成对象文件。然后需要使用链接器生成可执行文件。您已经覆盖了编译器的标准输出,将它生成的
.obj
文件命名为
prog.exe
,但将
.obj
文件命名为
.exe
文件不会使其成为可执行文件。要使测试正常运行,以最简单的方式,您需要:

 ..\test> lcc64 source.c
这将生成一个文件
source.obj
。然后你需要

 ..\test> lcclnk64 source.obj
这将生成一个文件
source.exe
。运行该文件然后生成输出:

 ..\test> source
 test
对于较大的项目,您通常会编写和维护一个构建脚本,该脚本管理所有源代码的正确编译顺序,并将其链接到最终可执行文件中。

lcc手册页上说:“lcc是一个交叉编译器-Wf target=target/os使lcc为运行os表示的操作系统的目标生成代码。“您可以尝试添加
-Wf target=x86/win32
,它可以工作:),谢谢。我以前使用过tcc,所以我认为它也可以工作。