Qt的插件路径和WOW64

Qt的插件路径和WOW64

我们正在尝试为工作中的用户设置 Qt 开发/运行时系统。这将允许他们自行构建和/或运行 32 位或 64 位 Qt 应用程序(在同一台机器上)。

问题是,如果我们什么都不做,用户就会看到可怕的“此应用程序无法启动,因为它找不到或加载 Qt 平台插件“windows”对话框。即使是像设计器这样的预构建可执行文件也会出现这种情况。

我们发现解决此问题的唯一方法是添加指向该可执行文件正确插件目录的 qt.conf 文件,或者将正确的“插件”目录层次结构复制到可执行文件的目录下。我们可以使用自定义 Visual Studio 构建规则来做到这一点,但这是一个重大问题皮塔。似乎应该有一种在全球范围内实施的方法。

我尝试将环境变量 QT_PLUGIN_PATH 设置为 %ProgramFiles%\Qt\Plugins ,但它仅适用于 64 位 EXE 文件。出于某种原因,即使是 32 位 EXE 文件也会将 %ProgramFiles% 扩展为“C:\Program Files\”。据我所知,Qt 不会检查 HKEY_LOCAL_MACHINE\SOFTWARE 中的任何内容,因此我无法通过这种方式重定向。

看起来应该有办法做到这一点。有吗?

答案1

我最终想到的解决方案是使用 Windows 的文件重定向%windir%\system32,它不受可执行文件的任何控制。这涉及:

  • 将 QT_PLUGIN_PATH 设置为%windir%\system32\Qt-plugins
  • 将 64 位版本的 Qt 的 plugins\platforms 目录复制到 %windir%\system32\Qt-plugins\
  • 将 32 位版本的 Qt 的 plugins\platforms 目录复制到 %windir%\sysWOW64\Qt-plugins\

显然,应用程序安装程序也必须执行这些步骤。

相关内容