如何编写一个可以在MS-DOS上运行的C++控制台应用程序?

5
我一直在谷歌上搜索这个问题,但从未得到明确的答案。我正在尝试编写一个简单的Hello World应用程序,并在msdos下运行它(我将安装在这里闲置的旧设备上)。
但首先,我一直在尝试编译一个普通的控制台应用程序并将其放入dosbox中进行测试,但不起作用,只是说它无效。所以我认为我需要其他东西来编译它。这是否意味着我必须在msdos环境中构建我的代码?即使是这种情况,我完全不知道如何做到这一点,有点像msdos小白。
如果有人能为我的情况提供一些帮助,我将非常感激!
附注:我正在运行64位系统。

2
你在哪个操作系统上编译你的“普通控制台应用程序”? - Code-Apprentice
1
你应该寻找一个MSDoc C++编译器,比如微软C++6.0。 - Felice Pollano
5个回答

5

我会尝试这个,因为我不认为我能找到这么旧的VS版本。 - Jens Ackou
@JensAckou 好的。我几年前用它做了一个项目。它运行得相当不错。 - Chimera
在64位系统上运行它可能会有问题吗?..按照自述文件操作时无法打开go32-v2.exe - Jens Ackou
抱歉,我不知道,我没有在64位系统上使用过它。 - Chimera

3
我假设您指的是实际的DOS而不是在Windows下运行的命令提示符。
DOS是一个16位操作系统,因此您需要一个能够生成16位二进制文件的编译器。 Windows控制台应用程序是32位的,因此它无法在DOS下运行。 您不必在DOS环境中构建代码,只需要正确的编译器即可。
至于编译器,您可能想看看OpenWatcom

好的,我会尝试像Felice建议的那样使用Microsoft C++ 6.0编译代码。很高兴知道我不会浪费时间在Windows 7机器上尝试编译。 - Jens Ackou
好的,这看起来是一个进步。我创建了一个新项目并制作了一个简单的hello world cpp文件,但当我尝试通过按F4键进行构建时,它却用错误信息“Error(E14):无法执行(wpp):没有这样的文件或目录”打击了我的脸。 - Jens Ackou
1
@JensAckou- OpenWatcom是一个命令行编译器,因此F4键必须与您的IDE相关。确保OpenWatcom工具可以通过系统的PATH访问(您应该能够进入命令shell并运行“wpp”而不出错)。您可能会发现,使用makefile或脚本从命令行构建项目比通过IDE构建更容易。 - bta
我注意到与WATCOM相关的"C:\WATCOM\BINNT;C:\WATCOM\BINW"已经存在,所以这应该不是问题。但是你如何在命令行中编译16位的dos文件呢?你能给一个大致的例子,告诉我应该以哪种格式输入吗?谢谢。 - Jens Ackou
@JensAckou- OpenWatcom维基百科有许多教程,包括如何使用makefile构建程序的教程。如果您对使用OpenWatcom有任何疑问,我建议首先咨询维基百科。它将是您最好的信息来源。 - bta
另请参阅OpenWatcom入门指南。特别是第3章可能会对你有所帮助。 - bta

2
微软 Visual C++ 1.52 是唯一可用的微软 C++ 编译器版本,可支持编译16位代码。您需要寻找一个可以生成16位 COM 文件的旧编译器。请参考此链接

1
在64位系统上运行会有问题吗?
是的,64位Windows无法执行16位程序。如果您安装了一个带有MS-DOS或32位Windows系统的虚拟PC,则虚拟PC将能够执行16位程序。
您需要编辑您的问题以说明您正在使用64位Windows吗?

0

听起来你正在一个现代版本的Windows上编译控制台应用程序,并试图将其简单地复制到旧的DOS框中。问题在于DOS不支持向前兼容。你不能在早期的DOS版本上运行使用Windows 7编译的程序。最简单的解决方案是在DOS框本身上编译你的程序。或者,如果你想在较新的机器上开发,你需要获取一个针对你想要运行程序的操作系统的交叉编译器。


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