【问题标题】:How to deploy my application using Qt-Creator?如何使用 Qt-Creator 部署我的应用程序?
【发布时间】:2010-12-29 04:01:16
【问题描述】:

我正在尝试像一个hello world 一样部署我的简单Qt 项目。

我构建成功,也可以在Qt-Creator上执行。但是,由于一些共享库错误,我无法直接在发布文件夹中执行二进制文件。

所以我只是将一些必要的库复制到发布文件夹中,例如 qtcore.dll 和 qtgui.dll,但我仍然无法执行。

如何部署我的简单 Qt 项目?是否还有其他部署步骤?

【问题讨论】:

  • 错误信息是在QtCore4.dll中找不到procedude的起点。这个错误信息可能不完全是因为它是我翻译成英文的。

标签: windows qt deployment qt-creator


【解决方案1】:

您还需要部署 MINGW 运行时 dll (mingwm10.dll)。该文件位于您的Qt\2009.5\mingw\bin 目录中。

还要注意你的应用程序是在调试模式还是发布模式下编译的。我刚刚使用 hello world 类型的应用程序和 Qt Creator 进行了测试。在debug 文件夹中,我复制了libgcc_s_dw2-1.dllmingwm10.dllQtCored4.dllQtGuid4.dll,它可以工作。

注意dll名称中的d,代表调试:QtCored4.dll

Qt 4.6: Deploying an Application in Windows。 对于 Qt 5,请检查 this page.

【讨论】:

  • 我复制了该文件和 libgcc_s_dw2-1.dll,但出现以下错误消息。在 QtCore4.dll 中找不到过程的起点。这个错误信息可能不完全是因为它是我翻译成英文的
  • @brian > 您使用的是哪个版本的 Qt,这是 LGPL 版本吗? Qt 库的 debug 和 release 版本你关注了吗?
  • 谢谢。我解决了这个问题。它失败了,因为我使用了位于 Qt\2009.5\bin 目录中的 qtcore.dll 和 qtgui.dll。当我使用位于 Qt\2009.5\qt\bin 目录中的那些文件时,它运行良好。
  • 酷!我很高兴你解决了这个问题。 Qt 是一个漂亮的工具包
  • @GregoryPakosz 该链接不再有效,它现在只是重定向到qt.digia.com。不确定它应该指向什么,否则我会编辑它。
【解决方案2】:

把所有的qt dll直接复制到你的windows目录“C:\Windows\”就不会出现qt dll错误了 100% 工作简单 注意:不要在您的 windows 目录中创建 qt dll 文件夹,按原样发布它们

【讨论】:

  • 这是个坏主意...在部署应用程序时,切勿破坏窗口,也不要使用此方法。花点时间查看需要哪些文件并将它们与您的应用程序一起部署。虽然老问题/答案.. 最好告诉人们这不是一个好主意
  • 这是一种不好的做法。如前所述,查找所需的 dll 并在部署期间相应地添加它们。
【解决方案3】:

您也可以使用静态链接,只需将此行添加到.pro 文件中:

QMAKE_LFLAGS += -static-libgcc

我找到了解决方案here并在WinXP上用QT creator 2.2.0成功测试

【讨论】:

    【解决方案4】:

    如果您不想依赖 qt/mingw dll,您应该按照此处的说明静态编译 qt:http://qt.nokia.com/doc/4.6/deployment-windows.html#static-linking

    【讨论】:

    • 这假设您有这样做的许可。静态链接需要商业许可。
    • @Drowe:你不必购买商业许可证,你只需要在 LGPL/GPL 许可证下发布源代码。
    • @Seba - 正确,好点。我的一个(可能)不正确的假设。
    • @Seba:也错了。您不必在 LGPL/GPL 下发布您的代码。如果您选择 Qt 作为 LGPL,您将不得不像在 LGPL 中提到的那样发布您的代码,作为目标文件,以使用户能够将您的应用程序链接到不同的 Qt 版本。您不必发布任何源代码。
    【解决方案5】:

    尝试在其上运行dependency walker (http://dependencywalker.com/) 以查看缺少哪些dll?

    通常,您不需要将这些 Qt 库移动到本地文件夹,因为 Qt 安装应该已将这些库添加到您的路径中。

    一种可能是您构建了调试,而 Qt 调试 dll 的命名不同

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2011-09-07
      相关资源
      最近更新 更多