【问题标题】:Unsupported 16 bit application不支持的 16 位应用程序
【发布时间】:2016-10-16 13:28:08
【问题描述】:

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

#include <stdio.h>

int main(int argc, char *argv[]) {      
    printf("test");
return 0;
}

使用lcc64.exe Source.c -o prog.exe。 但是如果我尝试在控制台中启动程序prog.exe, 弹出一个窗口,上面写着“不支持的 16 位应用程序”,“由于与 64 位版本的 Windows 不兼容,无法打开程序或功能 '\??\C:\lcc\lcc\bin\prog.exe'。 "

我做错了什么?

【问题讨论】:

  • lcc 的手册页说:“lcc 是一个交叉编译器;-Wf-target=target/os 使 lcc 为运行以 os 表示的操作系统的目标生成代码。”您可以尝试添加-Wf-target=x86/win32

标签: c exe lcc


【解决方案1】:

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

这里的问题是编译器不产生可执行文件——它产生目标文件。然后您需要使用链接器来生成可执行文件。您已覆盖编译器的标准输出以将其生成的 .obj 文件命名为 prog.exe,但将 .obj 文件命名为 .exe 文件并不能使其成为可执行文件。要以最简单的方式进行测试,您需要:

 ..\test> lcc64 source.c

这会产生一个文件source.obj。然后你需要

 ..\test> lcclnk64 source.obj

这会产生一个文件source.exe。运行文件然后产生输出:

 ..\test> source
 test

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

【讨论】:

  • 它有效:),谢谢。我之前使用过 tcc,所以我认为它会以相同的方式工作。
猜你喜欢
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
相关资源
最近更新 更多