为Windows 98编译Qt

24

我需要支持Windows 98。 Qt文档声称这是可能的,但没有提供说明。Qt 4.6分发的二进制文件在Win98上无法运行,我尝试了大部分Qt应用程序,也都无法在Win98上运行。对于一些可以在Win98上运行的应用程序,我问过作者他们是如何实现的,但通常的答案是意外成功,不知道是什么因素导致的。

在寻找论坛帮助时,我只发现了一些被证明是错误的猜测。例如,有人认为要编译Win9x,必须在该平台上构建工具和应用程序。然而,我发现的一些可运行的应用程序是在更新版本的Windows上构建的。

  • 构建Qt开发工具及应用程序以支持Win98需要什么条件?
  • 从WinXP或Linux进行交叉编译怎么样?
  • 是否有特定的组件无法在Win98上运行?
  • 对于Win98支持,动态或静态链接是否存在特定的困难?

哇。我投票给今天的问题。 - Adam Crossland
一个想法:尝试使用能够针对Win98进行目标定位的编译器和运行时库,例如Visual Studio/Visual C++ 6.0。 - Warren P
Trolls测试过的最后一个在Windows 98上运行的Qt 4版本是4.4,详见编译器注释-Visual Studio(Windows)。如果您不需要最新版本,可以尝试使用VC++ 6 SP5或.NET来使用该版本。 - przemoc
1
你有我的同情。祝你好运。 - kikito
2个回答

7

这是我能做到的最远程度:

使用MinGW或VC++ 6 SP5可以针对Windows 98进行目标设置,无论在任何Windows版本上都可以实现。从Linux进行交叉编译是可行的,但不容易设置

Qt 4.4.3是最后一个在Win98上经过官方测试的版本。要在Win98上运行分发的二进制文件,您需要安装来自Microsoft的旧版本glu32.dll和opengl32.dll。由于未解决的错误,Assistant将启动但无法加载帮助文件。 bin目录中的备用版本assistant_adp.exe可以正常工作。似乎唯一的其他潜在问题是QtOpenGL可能使用在较旧的框上不可用的功能。

Qt 4.5.3似乎仍然兼容,除了WebKit、OpenGL和Phonon。 QtOpenGL需要OpenGL 1.5,我不知道在旧设备上是否可能。我没有深入研究Phonon,看不清问题所在。现在,QtWebKit需要Win2K或更高版本。分发的二进制文件基本上可以正常工作。Assistant依赖于QtWebKit,因此无法启动,但assistant_adp.exe仍然可以使用。
Qt 4.6.3分发的二进制文件现在与Win98完全不兼容。可能可以通过MinGW 4.4和大量的黑客攻击来使一些东西工作。
构建Qt Creator需要Qt 4.6.0和MinGW 4.4或VS 2008。

1

哇...有趣的任务。

基本上,是的,Qt支持Windows 98。问题在于有一个大的IF。例如,如果您尝试设置一些不同的QTextCodec :: codecForName,您将需要为此提供第三方ttf,因为在大多数情况下,Win98将不会将其识别为有效的。如果您在win98机器上编译它时提供了确切的错误,我可以帮助您。

“从WinXP或Linux进行交叉编译怎么样?” - 如果您仅使用Qt库,一切都很好。否则,在.pro文件中,您必须在win32和unix条件下链接这些库。因此,您甚至可以禁止您的代码在其他系统中编译和执行...

“是否有特定的组件无法在Win98上运行?” - 当然。在.pro文件中,您可以包括针对不同操作系统的不同库。

"Win98支持的动态或静态链接是否存在特定困难?" - 据我所知-没有。

//关于-但今天仍然奇怪,有人想要为win98编写应用程序...


你的意思是Qt 4.6中的所有19个跨平台模块,包括QtWebKit,在Win98上都可以编译和运行吗?如果我在WinXP上使用mingw32的cmake和gcc,需要哪些特殊设置才能针对Win98?有没有想法为什么在XP上编译的许多二进制文件在98上无法运行? - user287424
2
回复:Win98。如果你只关心销售新软件,毫无疑问Win98看起来已经过时了。但这忽略了那些一直使用旧电脑直到它们报废的用户。如果他们手头的设备能够正常工作,他们就不会觉得有必要花钱购买新设备。这个群体包括老年人、穷人、小型企业和许多发展中国家的人。我的印象是全球使用Win98的用户数量要比Mac OS X的用户数量多得多,而且没有人怀疑考虑满足Mac用户的需求的价值。 - user287424
关于理论:是的,这些模块中的每一个都应该在Win98下运行良好,特别是如果您的应用程序仅使用Qt模块。但是,你永远不知道。未经测试的平台通常会出现一些愚蠢的错误。所以,试试看吧。 - Vladimiroff

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