是否可以将DOS应用程序转换为Win32控制台应用程序?我有一个很久以前写过的旧程序,丢失了它的源代码并现在问自己是否可以将DOS二进制文件转换为实际的Windows二进制文件,它在命令行提示符下运行?
答案 0 :(得分:1)
这是不可能的。 DOS程序将尝试使用Windows下不存在的DOS系统调用。该程序需要为Windows更新和重建。您可能在DOS模拟器中运行原始程序取得了一些成功。
答案 1 :(得分:-1)
查看有关在Windows下运行DOS程序的其他答案。
要将DOS程序转换为Win32控制台应用程序,必须将DOS程序中的16位(8086)代码转换为32位(i386)代码。这是一件很难做的正确的任务,这也许就是为什么没有转换器可供使用的原因。 (或者,仿真器可以运行16位代码而无需进行转换,请参见其他答案和注释。)
但是,并非所有DOS程序都包含16位代码,例如,使用由Watcom C / C ++编译器(或等效地,与OpenWatcom:owcc -bdos4g prog.c
一起构建的DOS扩展程序的程序,仅包含32位代码。 Windows可以直接运行32位代码,但是API调用(例如打开和读取文件,分配内存,获取当前时间,向控制台写入彩色文本)必须从DOS + DPMI API转换为Win32 API。这样的转换在技术上是可行的(即使在最终的.exe文件中,也无法访问源代码),并且与将16位代码转换为32位代码相比,正确进行转换要容易得多。但是,我仍然不知道可以使用的转换器。
还请注意,将图形和音频代码转换为Win32 API非常困难,但这超出了本问题的范围。