【问题标题】:Qt Release qt.confQt 发布 qt.conf
【发布时间】:2015-04-28 07:43:40
【问题描述】:

当我发布我的 Qt 项目时,我想重新分发 QtCore5.dllQtxxx.dll 文件。

如何让myapp.exe 自动找到它们? 最好的方法似乎是编辑与我的可执行文件位于同一文件夹中的 qt.conf 文件。

myapp.exec:\myapp\bin 文件夹中

dll 位于 c:myapp\common 文件夹中

【问题讨论】:

  • 我的 app.exe 在 c:\myapp\bin 文件夹中。
  • dll 位于 c:myapp\common 文件夹中
  • 您可以编辑您的问题,使其更具可读性和可回答性。你不应该评论你自己的问题

标签: qt


【解决方案1】:

只需将所有必需的 dll 文件放入与可执行文件相同的目录中即可。

请注意,除了 Qt*.dll 之外,还有更多文件要分发 - 您需要来自 platforms 子目录的适当插件等等。阅读有关在 Windows 下部署应用程序的 Qt 文档 - 它会教您所有必需的文件。

【讨论】:

  • 所有必需的 dll 都在 C:\myapp\common 中,我的应用程序在 C:\myapp\bin 中。
  • 我把 qt.conf [Paths] Prefix = $(myapp_HOME)\common Plugins = $(myapp_HOME)\common
  • 与我的可执行文件在同一目录中但没有成功
  • 在 Windows 下无法使用。所有内容(可执行文件和 dll 文件)都必须位于同一目录中。对不起。这就是它在 Windows 下的工作方式。这里对这个主题有更详细的描述:stackoverflow.com/questions/2463243/dll-search-on-windows
  • 但它有效,您只需正确插入路径。我忘了输入我要说的最后一句话。请展开关键“Path”环境变量:C:\myapp\common\bin; C:\myapp\common\plugins;
【解决方案2】:

“更好”的方法是将您的qt.conf 放入您的资源:/qt/etc/qt.conf。这种方式对于解决平台依赖关系具有最高优先级。

在我们的项目中,我们使用 cmake 生成必要的qt.conf 文件:在调试模式下,我们将路径放置到已安装的 Qt 二进制文件中,并在发布时放置到本地(部署)文件夹。

Qt5xxx.dll 文件是链接的,所以你应该把它放在同一个文件夹中,或者通过PATH 环境变量使它们可用。如果您真的想要这种奇特的再分发系统(请说出真正的原因)- 您可以创建自己的特定于平台的启动器,它将从任何路径加载必要的 .dll。

【讨论】:

  • 在主程序中我添加 QCoreApplication::addLibraryPath(QString::fromLocal8Bit(ToolPathEnv) + "\\common"); QCoreApplication::addLibraryPath(QString::fromLocal8Bit(ToolPathEnv) + "\\common\\plugins");我将它设置在 PATH 环境变量中。 qt.conf 与 myexecutable.myapp.exe 放在同一目录,其内容为:[Paths] Prefix=$(MyApp_HOME)\common Plugins=plugins
  • @Pogel,如果您的应用程序将存储在具有复杂 unicode 名称的文件夹中,您的解决方案将不起作用。
  • 我的应用程序没有包含复杂 unicode 的文件夹。
  • 如果您只是为自己编写应用程序 - 那么这是您的故意错误。如果您不想修复代码中的错误,我无话可说...
猜你喜欢
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
相关资源
最近更新 更多