【问题标题】:Launch Qt application from batch file从批处理文件启动 Qt 应用程序
【发布时间】:2015-09-17 10:06:12
【问题描述】:

我在 Qt 和 Qt Creator 之外开发了一个应用程序,当我运行这个应用程序时,它可以工作。但是当我使用批处理文件来执行应用程序时,我得到了这个错误:

应用程序无法启动,因为它无法找到或加载 Qt 平台插件“Windows”

我已经包含了所有的 dll,包括 platform/qwindows.dll,但我不明白问题是什么。知道有什么问题吗?

之前,我以为我使用了一个设置不正确的外部库,但是出于测试目的删除了外部库后,问题仍然存在。

批处理文件的内容是:

@echo off

set VMT=\\serverName\DEV
set BC_VERSION=v1.0

echo Test release of BeamConfigurator %BC_VERSION%

set BC_HOMEDIR=%VISMT%\BeamConfigurator\%BC_VERSION%
set BC_BINDIR=%ABC_HOMEDIR%\bin

echo %BC_BINDIR%

start /WAIT /B /LOW %BC_BINDIR%\BeamConfigurator.exe

【问题讨论】:

  • 你能提供你的批处理文件吗?
  • 你的批处理文件启动Qt app可执行文件时的当前工作目录不是“platform”文件夹所在的目录,所以Qt app找不到。
  • @N1ghtLight:平台/窗口与可执行文件位于同一文件夹中。
  • @user1703942,但是您启动批处理的文件夹是什么?你如何启动它?
  • 如果您在谈论批处理文件的位置,那么批处理文件与可执行文件和 dll 不在同一个文件夹中。它位于服务器的另一个位置。这个过程也适用于其他 Qt 应用程序。批处理文件和可执行文件的位置是Beamconfiguration/bin/Beamconfiguration.exe Beamconfiguration/Script/test.bat

标签: qt batch-file plugins qwindow


【解决方案1】:

看起来您的可执行文件正在尝试访问硬编码(Qt Creator 所做的)库路径。如果您已将运行可执行文件所需的所有 dll 文件复制到与可执行文件相同的目录,请尝试此操作。

创建一个名为qt.conf 的文件并将其放在与可执行文件相同的目录中。像这样添加所需的东西。

[Paths]
Prefix = /some/path
Translations = i18n
Plugins = plugins

更多信息可以找到here

【讨论】:

    【解决方案2】:

    问题是我的一位同事在测试某些东西时在 main 函数中添加了以下行。

    QCoreApplication::addLibraryPath("./");

    删除此行后,它开始使用批处理文件。但是我仍然不明白为什么只有当我们从批处理文件启动它时才会出现问题。即使我已将批处理文件与可执行文件放在同一文件夹中。

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2012-02-27
      • 2010-10-19
      • 2018-04-22
      • 1970-01-01
      • 2019-03-31
      相关资源
      最近更新 更多