【发布时间】:2014-04-09 22:52:57
【问题描述】:
有点历史...我有 3 个系统我花时间,一个 DOS 6.22 系统,一个 Windows 95 系统,和一个现代 Windows 7(64 位)系统。当我升级到 Win7-64 时,一些我最喜欢的命令行实用程序停止工作,所以我决定自己重新编写它们。我仅有的 2 个编译器是 Borland Turbo C++ 3.0 和 Visual Studio 2008,它们可以很好地构建 2 个版本,一个 DOS 16 位和一个 Windows 7 32 位(我猜也可以构建 64 位。 ) 问题出在我的 Win95 系统上。 DOS 版本在那里运行良好,但由于我花时间在 Win7 构建中支持 LFN,我希望在我的 Win95 系统中使用它。因此,经过大量研究,我发现并购买了 Visual Studio 6(根据我的研究,最后一个支持 Win95)复制了代码(当然必须重写部分),它编译得很好,并且可以工作:)
下次我必须在 DOS 模式下启动我的 Win95 系统时,问题就出现了。程序停止工作(当然,)因为没有加载 Win95。我真的不想安装 2 个程序副本(需要 2 个不同的文件名),所以我希望有一种方法可以将 2 个版本链接到一个文件中。如果我在 DOS 中执行它,而不是说它需要 Windows,它只会跳转到程序的 DOS 部分。这样,它将是一个单独的程序,如果加载了 Win95,则支持 LFN,如果未加载 Win95,则不支持。由于 Win95 版本在 Win7-64 中也可以正常工作,因此它可能还会生成一个适用于所有 3 个系统的单一版本(这将是一个额外的好处。)
我进行了一些网络搜索,但找不到与我要查找的内容相关的任何内容。所以我不知道这是否可能。我可能需要再买一个编译器,但考虑到它的年代久远,我可能负担得起。不过,我的网络搜索确实产生了让我相信它“应该”是可能的信息。它只需要一个与 Windows 编译器不同的 exe 头文件。它可能需要我为 32 位重新编写 DOS 版本并使用 DOS 扩展器(对于保护模式,假设我找不到方法将它包含在文件本身中。)这是可以接受的(尽管不理想。)我更愿意在 DOS 部分使用 16 位代码,在 Windows 部分使用 32 位代码(以获得最大兼容性。)
有没有人有类似的信息?如果您能指出我正确的方向,将不胜感激。
【问题讨论】:
-
我认为 DOS 不支持这种可执行文件。
-
这是题外话。 Stack Overflow 是关于编程的。试试superuser.com。
-
将您的 DOS 程序设置为 Win32 程序的存根。
-
@AdiInbar:这是一道编程题。
-
@AdiInbar:我不知道这个问题怎么可能是关于编程的更多。您不必参考编程语言或引用某些代码来提出编程问题。
标签: windows exe dos multiplatform