我可以用什么现代C编译器来编译这个1992年的MS-DOS程序?

pkmbmrz7  于 2023-05-22  发布在  其他
关注(0)|答案(6)|浏览(171)

我得到了修改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)

idv4meu8

idv4meu81#

更有趣的问题可能是它需要什么 * 函数声明、类型声明、全局变量声明和宏 *。只要这些东西都在那里,它们在头文件中的特殊排列就不是很有趣。
因此,注解掉有问题的#includes,让编译器抱怨它缺少的位。那你就知道你在找什么了

ioekq8ef

ioekq8ef2#

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

3htmauhk

3htmauhk3#

还有Turbo C++ 1.01,虽然不是那么现代,但似乎也有所有这些头文件。我仍然偶尔使用它。

6yoyoihd

6yoyoihd4#

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

hl0ma9xz

hl0ma9xz5#

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

4urapxun

4urapxun6#

我无法找到一个编译器直接从Windows 10作为主机编译C for MS-DOS,但只能从MS-DOS模拟器作为主机(这是DOSBox)和编译器为我工作是Borland Turbo C++ 3.0。以下是步骤:

  • 下载DOSBox
  • install it
  • 运行它你会得到一个命令提示符像Z:\>
  • 现在回到Windows 10,准备一个专用于DOSBox的目录,我们将在其中工作,例如在C:\驱动器中创建一个并将其命名为DOS,如果需要,您可以选择其他路径和名称
  • 返回DOSBox,在提示符中键入:
Z:\>MOUNT C C:\DOS
Z:\>C:

第一个命令MOUNTmountC:\DOS目录(您的系统)的DOSBox,所以引用C:\SOMETHING从内部DOSBox就像引用一个文件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

  • 安装程序将在TCC中创建一堆文件,这些文件是编译器文件,最重要的是,我们将使用TCC.EXE编译C文件
  • 返回到windows,并将要编译的C源文件(例如TEST.C)放入DOS文件夹中
  • 返回到DOSBox并仍在TCC文件夹中,键入:
C:\TCC>TCC.exe -I. -L. C:\TEST.C

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

  • 该命令将在TCC文件夹中生成2个新文件,TEST.EXETEST.OBJ(这是目标文件,如果需要,您可以删除它),TEST.EXE是编译后的程序,您可以通过键入TEST.EXE对其进行测试
  • 在Windows中,您可以通过DOS\TCC中的可执行文件找到它

相关问题