我可以使用哪个现代的C编译器来构建这个1992年的MS-DOS程序?

6

我被给予了修改一个1992年构建的MS-DOS程序的源代码。我有EXE文件,它可以正常运行,但我需要修改源代码。源代码需要以下头文件才能编译。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <dos.h>
#include <dir.h>
#include <alloc.h>
#include <ctype.h>
#include <string.h>
#include <mem.h>
#include <values.h>

有人知道这个项目使用了什么编译器吗?是否有现代编译器可以处理它?我尝试使用Visual Studio 2010和GCC“开箱即用”,但失败了,因为缺少一些头文件(dir.h、alloc.h、mem.h、values.h)。

6个回答

10

或许更有趣的是询问需要哪些函数声明、类型声明、全局变量声明和宏。只要所有这些都在那里,它们以何种方式排列成头文件就不那么重要了。

因此,注释掉有问题的#includes,让编译器抱怨它缺少的部分。然后你就知道你在寻找什么了。


5
你可以尝试使用Open Watcom编译器,它是少数几个能够构建16位DOS可执行文件的相对最新的编译器之一。除了找到旧的MS或Borland编译器(或者最初使用的任何编译器)之外,这可能是最简单的方法。
如果你想要为不同的平台重新构建而不是再次为DOS重新构建,则很可能需要对程序本身进行大量更改。这可能是值得的,但可能会有很多工作和意外的头痛。

4
你可以尝试使用DJGPP。根据文档,它可能有你需要的头文件。

4

有一个不太现代的Turbo C++ 1.01,似乎也拥有所有这些头文件。我偶尔还会使用它。


1
我成功获取了 Turbo C++ 3 的旧版本,并且编译没有出现任何问题。感谢您的建议! - user785179

1

a) 移除所有头文件 b) 尝试编译 c) 查找未定义的函数/类型所在的头文件 d) 添加头文件 e) 重复


1

我无法在Windows 10作为主机直接编译C语言的MS-DOS编译器,但只能从一个MS-DOS模拟器(即DOSBox)作为主机进行编译。对我有效的编译器是Borland Turbo C++ 3.0。以下是步骤:

  • 下载DOSBox

  • 安装

  • 运行它,你将得到一个像Z:\>的命令提示符

  • 现在回到Windows 10准备一个专用于DOSBox的目录,在你的C:\驱动器中创建一个名为DOS的目录,如果你想,你可以选择另一个路径和名称

  • 返回到DOSBox,在提示符中键入:

    Z:\>MOUNT C C:\DOS
    Z:\>C:
    

第一个命令MOUNT挂载您系统的C:\DOS目录到DOSBox中,因此在DOSBox内引用C:\SOMETHING就像从您的系统引用文件C:\DOS\SOMETHING一样。第二个命令C:会将提示符更改为C:\>,就像您指向新的C驱动器一样(它又指向您系统的C:\DOS),因此直接键入DIR将列出组成它的文件和目录。

  • 现在回到Windows并下载Borland Turbo C++ 3.0 zip

  • 将其解压缩到C:\DOS中,这样您就会拥有C:\DOS\TCC\TURBOC.EXE

  • 返回DOSBox,在C:\>中键入:

    C:\>CD TCC
    C:\TCC>TURBOC.EXE
    

这将启动安装程序,您将收到提示“某些文件已经存在。覆盖(y/n)?”因此每次键入“y”

  • 安装程序将在TCC文件夹内创建一堆文件,其中包括编译器文件,最重要的是我们将使用TCC.EXE来编译C文件。

  • 回到Windows并将要编译的C源文件(例如TEST.C)放入DOS文件夹中。

  • 回到DOSBox,仍然在TCC文件夹内,输入以下命令:

    C:\TCC>TCC.exe -I. -L. C:\TEST.C
    

命令说明:TCC.exe 是编译器可执行文件,-I. 是编译器选项,表示使用当前目录 . 作为包含目录,-L. 是编译器选项,表示使用当前目录 . 作为库目录,C:\TEST.C 是要编译的 C 源文件的完整路径。

  • 该命令将在 TCC 文件夹内生成 2 个新文件,TEST.EXETEST.OBJ(这是可以删除的对象文件),TEST.EXE 是已编译的程序,您可以通过键入 TEST.EXE 来测试它。
  • 在 Windows 中,您可以通过 DOS\TCC 文件中的文件找到它,那就是您的可执行文件。

1
尽管这有些重复,但扩展了所选答案,更新的链接和格式良好的答案将受到赞赏(但要注意不要在所有情况下都扩展答案)。Borland Turbo C是包含Turbo C(和Turbo汇编器Tasm)的IDE。它最初是DOS 3.3时代的DOS IDE,并通过DOS 4.1直到发布Windows 286、386和3.0,然后被重写为Windows IDE。对于PC而言,它是当时很好的IDE。虽然今天编译器已经过时了(但对于1992年的DOS程序来说还可以)。 - David C. Rankin

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