2

我已经使用 Qt 4.8.4 创建了一个应用程序,现在我必须在 Windows 2000 机器等上分发它。我已经尝试在 Internet 上搜索有关它的明确解释,但我无法确认 Qt 实际支持的旧 Windows 版本是什么。

该应用程序在 Windows XP(32 位和 64 位)和 Windows 7 上运行良好,但是当我尝试在 Windows 2000 上启动它时,我收到众所周知的错误“ [应用程序名称].exe 不是有效的 win32 应用程序。 ” ,我猜该错误依赖于不受支持的 Windows 版本。

该应用程序是一个“简单”的应用程序,它只需要 QtCore4.dll 和 QtGui4.dll 作为依赖项。

如果有帮助,我正在使用 Qt 4.8.4 和 Qt Creator 2.7.1 在 Windows 7 64 位机器上进行开发。如果我进入 Tools->Options->Build&Run->Kits->Manual->Desktop,我有“Microsoft Visual C++ Compiler 10.0 (x86)”作为正在使用的编译器。我是否必须选择一个不同的,也许?

感谢您的任何回答。


编辑: What I've done after reading @vahancho's answer:

  • 使用 CMake 将项目从 Qt Creator“移动”到 Visual Studio 2010;
  • 安装 Visual Studio Express 2008(以这种方式启用 V90 平台工具集)
  • 从VS2010打开项目,在Project Properties->Configuration Properties->General下,将Platform Toolset改成V90;
  • 重新编译项目;

现在,我尝试在安装 Windows 2000 的虚拟机上运行以这种方式编译的应用程序,但这次又遇到另一个错误:“无法在动态链接库 KERNEL32.dll 中找到过程入口点 DecodePointer ” .

4

2 回答 2

2

好吧,经过一番调查,我发现在 Windows 2000 上运行 MSVC10 应用程序是不可能的。您必须最多使用 MSVC9 (Visual Studio 2008) 构建它,或者使用 VS2010 多目标功能让 VC++2010 使用 VC++2008 编译器和库。另请参阅此Microsoft Connect 讨论

于 2013-09-24T08:05:03.840 回答
2

好的,已经过去了一段时间,但我想对我的这个问题给出一个明确的答案。不幸的是,我的要求是不可能的。@vahancho 的回答是正确的,他指出的解决方案在大多数情况下都是正确的。但是,DecodePointer它“包含”在 Windows XP SP 2 内核中,即使选择 VC++2008 编译器,也无法使用它为较旧的 Microsoft 操作系统编译应用程序。

CodeProject 上的这篇文章提供了额外的参考。对我来说幸运的是,我的应用程序非常简单,可以让我使用旧的 VB6 重写它:)

于 2013-10-29T11:03:43.187 回答