如何编写可以在msdos上运行的c ++控制台exe?

时间:2012-10-09 18:39:38

标签: c++ compiler-construction console-application cross-compiling dos

我一直在谷歌寻找这个,但从来没有得到一个明确的答案.. 我正在尝试编写一个简单的hello world应用程序并使其在msdos下运行(我将在这里的旧设备上安装)。

但首先,我一直在尝试编译一个普通的控制台应用程序并将其放在dosbox中以测试它不起作用,只是说它无效。所以我假设我需要其他东西来编译它。这是否意味着我有义务在msdos环境中构建我的代码?即使是这种情况,我根本不知道如何做到这一点,有点像一个msdos虚拟..

如果有人能对我的案子有所了解,我将非常感激!

P.S:我正在运行64位系统

5 个答案:

答案 0 :(得分:4)

您可以使用DOS的免费DJGPP编译器。
here is the documentation for using DJGPP

答案 1 :(得分:2)

我假设您的意思是实际的DOS,而不是在Windows中运行的命令提示符。

DOS是一个16位操作系统,因此您需要一个能够生成16位二进制文​​件的编译器。 Windows控制台应用程序是32位的,因此它不会在DOS下运行。您不必在DOS环境中构建代码,只需要正确的编译器。

对于编译器,您可能需要查看OpenWatcom

答案 2 :(得分:2)

  

Microsoft Visual C ++ 1.52是Microsoft唯一可用的版本   支持编译16位代码的C ++编译器。

http://social.msdn.microsoft.com/forums/en-US/Vsexpressvc/thread/cfc848e8-a797-42a5-8537-892cfc234123

您需要找到一个可以生成16位COM文件的旧编译器。

答案 3 :(得分:1)

  

在64位系统上运行它是个问题吗?..

是的,64位Windows无法执行16位程序。如果安装具有MS-DOS或32位Windows系统的虚拟PC,则虚拟PC将能够执行16位程序。

您是否需要编辑问题以表明您使用的是64位Windows?

答案 4 :(得分:0)

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