【问题标题】:Qt Apps DLLs conflicts with QT Creator DLLsQt Apps DLLs 与 QT Creator DLLs 冲突
【发布时间】:2015-04-10 18:04:00
【问题描述】:

我们有一个构建服务器,其 QT 版本与我的开发站不同。因此,如果我在我的开发站上安装由 Build 服务器构建的软件,我将无法启动该应用程序,因为该应用程序首先在我的 QT Creator 目录中查找。我有一个错误窗口告诉这个:

此应用程序无法启动,因为它无法找到或加载 QT 平台插件“windows”。可用的平台插件有:minimal、offscreen、windows、windows。

所以我需要将 c:\QT 重命名为 c:\QT.bak 之类的名称,现在我可以启动应用程序,因为它在应用程序安装路径中找到了正确的 DLL。

有谁知道如何解决这个问题?能够使用与 QT Creator 中的不同版本的 QT 运行应用程序。

所有计算机都使用 Windows。

谢谢

【问题讨论】:

  • 这很奇怪。你的全局路径中有 c:\qt\something\bin 吗?或者是否设置了 QT_PLUGIN_PATH?另外,您本地 Qt 的安装路径可能与构建服务器上的安装路径相同。然后部署需要采取一些特殊措施来确保使用捆绑的 Qt 插件,而不是开发 Qt。
  • 我的 PATH 中没有对 QT 文件夹的任何引用,并且 QT_PLUGIN_PATH 也没有设置。在构建服务器上,QT 安装在 c:\QT\5.3 和我的计算机上。我在两边都运行 QTDiag,构建服务器在 QT 5.3.1 上,我的是 QT 5.3.2。
  • 然后我假设它会尝试从您的安装目录加载平台插件,而不是从构建服务器加载包。我认为像 Procmon、进程浏览器、依赖遍历器这样的工具可以用来检查它找到并加载了哪个插件库。
  • 我第一次使用进程监视器,很好!我可以看到该过程首先查看QT安装,然后在安装目录中找到dll。是否可以进行构建并告诉它不要这样做?只看安装目录?
  • 我也有同样的问题 => stackoverflow.com/questions/33503424/…

标签: windows qt dll


【解决方案1】:

可以将 qt.conf 文件放在与部署的 exe 相同的目录中。在此文件中,您可以像这样指定插件目录:

[Paths]
Plugins=.

这意味着 Qt 将只搜索插件!在这个文件夹中。 在此示例中,qwindows.dll 需要像我们习惯的那样位于平台/中。

这对我来说非常有效,因为对于我想要部署的每个应用程序,我都将 qt dll 和插件完全分开。并且已安装的 Qt 版本不再干扰。

可以在此处找到非常详细的文章:http://www.tripleboot.org/?p=536 在“Qt 本身加载的 DLL,即插件:”部分中:

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多