我得到了修改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条答案
按热度按时间idv4meu81#
更有趣的问题可能是它需要什么 * 函数声明、类型声明、全局变量声明和宏 *。只要这些东西都在那里,它们在头文件中的特殊排列就不是很有趣。
因此,注解掉有问题的
#includes
,让编译器抱怨它缺少的位。那你就知道你在找什么了ioekq8ef2#
您可以尝试Open Watcom编译器,它是少数几个构建16位DOS可执行文件的相对最新的编译器之一。除了找到一个旧的MS或Borland编译器(或任何最初使用的编译器),这可能是最简单的方法。
如果你想为一个不同的平台重新构建,而不是再次为DOS重新构建,你可能必须对程序本身进行大量的更改。这可能是值得的,但可能是很多工作,有很多令人惊讶的头痛。
3htmauhk3#
还有Turbo C++ 1.01,虽然不是那么现代,但似乎也有所有这些头文件。我仍然偶尔使用它。
6yoyoihd4#
您可以尝试使用DJGPP。根据documentation,它可能有你需要的头文件。
hl0ma9xz5#
a)删除所有头文件B)尝试编译c)查找未定义函数/类型是int的头文件d)添加头文件e)重复
4urapxun6#
我无法找到一个编译器直接从Windows 10作为主机编译C for MS-DOS,但只能从MS-DOS模拟器作为主机(这是DOSBox)和编译器为我工作是Borland Turbo C++ 3.0。以下是步骤:
Z:\>
C:\
驱动器中创建一个并将其命名为DOS
,如果需要,您可以选择其他路径和名称第一个命令
MOUNT
将mountC:\DOS
目录(您的系统)的DOSBox,所以引用C:\SOMETHING
从内部DOSBox就像引用一个文件C:\DOS\SOMETHING
从您的系统.第二个命令C:
会将提示符更改为C:\>
,就像您指向新的C驱动器一样(它又指向系统的C:\DOS
),因此直接键入DIR
将列出组成它的文件和目录C:\DOS
中解压缩它,因此您将获得C:\DOS\TCC\TURBOC.EXE
C:\>
中键入:这将启动安装程序,你会得到提示与“一些文件已经存在.是否覆盖(是/否)?所以每次都输入y
TCC
中创建一堆文件,这些文件是编译器文件,最重要的是,我们将使用TCC.EXE
编译C文件TEST.C
)放入DOS
文件夹中TCC
文件夹中,键入:命令说明:
TCC.exe
是编译器可执行文件,-I.
是编译器选项,表示使用当前目录.
作为Include目录,-L.
是编译器选项,表示使用当前目录.
作为Libraries目录,C:\TEST.C
是要编译的C源文件的完整路径TCC
文件夹中生成2个新文件,TEST.EXE
和TEST.OBJ
(这是目标文件,如果需要,您可以删除它),TEST.EXE
是编译后的程序,您可以通过键入TEST.EXE
对其进行测试DOS\TCC
中的可执行文件找到它