如何定向针对Windows 98?

4

我急需开发一个适用于Windows 98的应用程序,并且不能使用其他操作系统。在当今时代,有没有现代的SDK可供我用来开发应用程序?如果能够从Visual Studio 2015针对Windows 98进行开发,那将是很棒的,但据我所知,目前没有这样的方式。

我能否使用Visual Studio 2015编写和编译适用于Windows 98的应用程序?如果不能,那么我的下一个最佳选择是什么?

1个回答

2
我假设您正在编写本地代码:Windows 98 使用 Win32-API,像 XP 和现代 Windows 版本一样。有些事情是不同的,例如缺少 VirtualAllocEx() 这样的 API。如果避免使用这些 API(https://msdn.microsoft.com 对于每个 API 都有一个最小要求部分),并编写本地代码,则您的程序也应该在 Windows 98 上运行。如果您在使用 Visual Studio 时遇到问题,可以使用老旧的 gcc 和类似 Eclipse、Code::Blocks 等的 IDE。只需确保不为 64 位平台编译它。否则,您将获得一个无法在 Windows 98 上运行的 PE+ 二进制文件。

编辑:

根据评论区中的讨论,有一些更新:虽然对于 32 位 PE(在现代 Windows 上编译)与 Windows 98 兼容,但由于其运行时库,使用 Visual Studio 可能会出现问题。作为替代方案,您可以尝试

  • 无运行时编译
  • 使用 MingW,因为它使用 msvcrt.dll

尽管如此,由于 MSDN 中的更新,检查哪个 Windows 版本支持某些 API 仍然很棘手。在这一点上,旧版本的 MSDN 可以提供帮助。


1
这并不是那么简单。使用VS2015默认设置构建的可执行文件甚至无法在Windows XP上运行,更别提Windows 98了。(我其实不确定为什么,可能是PE格式的不同版本之类的?) - Harry Johnston
有两个主要版本,PE和PE+。后者是64位的。我没有尝试使用Visual Studio,但是使用MinGW编译并使用支持的Win32 API的PE可执行文件应该可以在Win98上运行。我不确定自动生成的存根(例如异常处理程序),但是较旧版本的mingw可能会在这种情况下有所帮助。我不明白为什么我在这里会被踩。 - Christian Ammann
根据这篇博客文章,使用默认的VS2012设置构建的可执行文件不能在XP上运行的唯一原因是运行时使用了更新的API。也许我被错误信息“不是有效的Win32应用程序”误导了。MinGW可能不会有这个问题,因为它使用msvcrt.dll而不是自己的运行时。 - Harry Johnston
1
@HarryJohnston 哦,好的,那很有趣。我不知道我不能相信 MSDN 的最低 Windows 版本要求。 - Christian Ammann
是的,这也让我感到惊讶。互联网档案馆的时光机在这方面非常有用。我从未尝试过使用它来获取如此久远的MSDN信息,但理论上应该是可用的 - 根据维基百科的说法,他们早在1996年就开始归档网络。 - Harry Johnston
显示剩余2条评论

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