2

我尝试在 WinPE 中运行 QT C++ GUI 示例。它应该只打开一个空窗口。

它抱怨缺少 d3d11.dll 和 dxgi.dll。

  1. QT 尝试使用 OpenGL,如果没有合适的驱动程序,它使用 DirectX 和 ANGLE。我尝试通过在 Qapplication 实例化之前调用 Qapplication::setAttribute(Qt::AA_UseSoftwareOpenGL) 来删除 DirectX 依赖项。没有变化,仍然需要这两个 dll。

  2. 我试图从我的常规 Windows 复制这两个文件,现在错误是:“过程入口点 CheckIsMSIXPackage 无法位于动态链接库 dxgi.dll 中”</p>

我不需要任何硬件加速,我怎样才能让它运行?

  • QT版本:5.14.2(动态链接)
  • WinPE 版本:Windows 10 2004
  • 编译器:Visual Studio 2019 和 Mingw 8.1(我都试过了,结果一样)
4

2 回答 2

2

为时已晚 ?不是解决方案,而只是一个想法。实际上我使用的是 Winpe WinPe 2009。当我在这个 winpe 中安装 VirtualBox 6.1.16 时,我添加了 opengl32.dll 和其他文件。VirtualBox 使用 QT5 文件。我得到同样的错误。使用 Depends.exe,我看到 opengl32.dll 需要这个 ChechIsMSIXPackage 并在 kernelBase.dll 中查找它。但是因为 winpe2009 附带的 kernelBase.dll 不包含这个 API,所以我从普通的 W10(在 ISO/Install.wim 中)获取这个 kernelBase.dll。而且,就我而言,virtualBox 运行良好,QT5 也可以,opengl32 也可以。

于 2021-03-14T08:52:37.230 回答
0

Qt 5.12 不依赖于 dxgi.dll,但 Qt 5.15 似乎确实如此。

一种选择是将您的项目回滚到 Qt 5.12,我个人可以确认 Qt 5.12 项目在 Windows PE 下运行良好。

(这是假设您使用的是维护工具中预构建的 Qt 二进制文件 - 否则可能有一个配置选项来重新编译 Qt 以避免这种情况)。

于 2021-12-01T19:27:59.230 回答