我一直在谷歌上寻找这个问题,但从未得到明确的答案.. 我正在尝试编写一个简单的 hello world 应用程序并使其在 msdos 下运行(我将把它安装在附近的旧设备上)。
但首先,我一直在尝试编译一个普通的控制台应用程序并将其放入dosbox中以测试它是否不起作用,只是说它无效。所以我想我需要其他东西来编译它。这是否意味着我有义务在 msdos 环境中构建我的代码?即使是这样,我根本不知道如何做到这一点,有点像 msdos 假人..
如果有人能解释我的情况,我将非常感激!
P.S:我运行的是 64 位系统
您可以使用免费的 DOS 版 DJGPP 编译器。
并且这里是使用 DJGPP 的文档。
我假设您指的是实际的 DOS,而不是 Windows 中运行的命令提示符。
DOS 是一个 16 位操作系统,因此您需要一个能够生成 16 位二进制文件的编译器。 Windows 控制台应用程序是 32 位的,因此它不能在 DOS 下运行。 您不必在 DOS 环境中构建代码,您只需要正确的编译器。
至于编译器,您可能想查看OpenWatcom。
Microsoft Visual C++ 1.52 是 Microsoft 的唯一可用版本 支持编译16位代码的C++编译器。
您需要找到一个可以生成 16 位 COM 文件的旧编译器。
在 64 位系统上运行它会是一个问题吗?..
是的,64位Windows无法执行16位程序。 如果您安装了MS-DOS或32位Windows系统的虚拟PC,虚拟PC将能够执行16位程序。
您是否需要编辑您的问题以表明您使用的是 64 位 Windows?
听起来您正在现代版本的 Windows 上编译控制台应用程序,并尝试将其简单地复制到旧的 DOS 框。问题是 DOS 不向前兼容。您无法在 Windows 之前版本的 DOS 上运行使用 Windows 7 编译的程序。最简单的解决方案是在 DOS 机器上编译程序。或者,如果您想在较新的计算机上进行开发,则需要一个针对您要运行程序的操作系统的交叉编译器。