【问题标题】:How to create executable file for a Qt Application?如何为 Qt 应用程序创建可执行文件?
【发布时间】:2012-01-08 21:48:25
【问题描述】:

我一直在互联网上搜索一些有用且明确的信息,这很烦人,这样一件微不足道的事情却很难做到。

我需要为我的 Qt 项目创建一个可执行文件,以便在其他计算机上运行它。我的项目在 Qt Creator 中运行良好,但是当我尝试运行在发布文件夹中创建的可执行文件时,我收到有关缺少某些 dll 的错误,尽管我已将它们全部放在我的 .exe 的同一目录中,但我现在得到了一些有关 dll (QtCore4.dll) 内的过程中的入口点的错误。

解决方案看起来像是一个静态链接,我找到了很多关于它的信息,但没有一个真正帮助我。到目前为止,这是我尝试过的:

  • 使用我上面所说的在发布文件夹中创建的可执行文件。
  • 静态链接,遵循本教程(以及许多其他教程,几乎相同):http://doc.qt.io/qt-4.8/deployment-windows.html 但在“配置 -static”期间出现以下错误: NMAKE : fatal error U1077: '"c:\Arquivos de 程序\Microsoft Visual Studio 9。 0\VC\BIN\cl.EXE"' : 返回码 '0x2' 停止。 构建 qmake 失败,返回码 2

为此我找不到任何解决方案,所以我在这里,只是想为我的Qt项目创建一个可执行文件,希望你们能给我一些启发。

【问题讨论】:

  • 我以前找到过,但我收到错误 NMAKE : fatal error U1077: '"c:\Arquivos de programas\Microsoft Visual Studio 9. 0\VC\BIN\cl.EXE" ' : 返回码 '0x2' 停止。构建 qmake 失败,返回代码 2 当我尝试运行配置时,我找不到答案.. 但是谢谢。

标签: c++ windows visual-studio qt


【解决方案1】:

基本上,您必须在 qt 实用程序所在的 qt 树深处寻找 mingw 子文件夹,并复制所需的 dll。

这些是我遵循的步骤,基于 QT 4.7.4,使用正确的共享库打包应用程序。

  1. 假设您在 c:\qtsdk 下安装了 QT
  2. 打开您的项目,并在发布模式下编译它。
  3. 转到此目录:C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin -- 它包含所有共享库。调试库以“d”结尾——frex,QtCore.dll 是发布版本,而 QtCoreD.dll 是调试版本
  4. 至少这些文件复制到您的发布目录(您的 .exe 所在的位置)

    • mingwm10.dll
    • libgcc_s_dw2-1.dll
    • QtCore4.dll
    • QtGui4.dll

    我刚刚以这种方式构建、测试和部署了一个虚拟项目。

【讨论】:

  • 我没有那个目录 (mingw\bin),可能是因为我使用的是 Visual Studio?无论如何,我将所有 dll 文件从那里复制到我的 .exe 文件中,并且它有效。它不是最好的解决方案,但它现在可以工作。谢谢。
  • 您可以开始一个一个删除dll文件,并检查程序是否仍在运行。这样你就可以很容易地找出需要哪些。这就是我在处理 DLL 依赖项时通常会做的事情。
  • 不知道你有没有在VS2008中配置.PRO文件,但是有些qt特性需要自己的dll。 (QtSql 等)。大多数情况下,只使用 QtCore.dll 和 QtGui.dll 就可以了。当您使用网络通信、sql、webkit 等高级功能时,请查看文档:您可能会获得指向所使用库的指针。您还可以使用 Dependency Walker 查看您的 exe 需要哪些 DLL。
【解决方案2】:

执行以下步骤:

1- 打开 qt 命令行窗口。

2- 进入.exe文件所在的目录(使用cd命令)。

3- 运行 windeployqt.exe --quick . 命令

4- 运行您的 exe 文件并享受它!

This video is great

【讨论】:

  • 要部署到不同的文件夹,我必须复制 .dlls 以及平台/目录
【解决方案3】:

这是我所做的,一段时间后我让它工作了;在确保您的程序在 Qtcreator 中构建后,转到包含您的 exe 的目录并双击它。(我使用的是 windows 并且不要'不知道在其他平台上是否相同)。应该弹出一个窗口告诉您缺少哪个 .dll。转到安装 Qt 的目录并在搜索栏中键入确切名称(Windows 7 中的右上角)并且 dll 应该出现在搜索结果中。右键单击并选择打开文件位置。复制 exe 所在的文件。再次双击 exe。如果缺少另一个 .dll,重复相同的操作,直到没有丢失。你的程序应该运行的结束。 希望这会有所帮助。

【讨论】:

    【解决方案4】:

    所以您下载了 Qt SDK 并且希望将 Qt 库静态链接到您的应用程序中,对吧?

    首先,如果您静态链接,则不需要任何 Qt*.dll 出现在任何地方,因为它是内置在应用程序中的。因此,仅此一项就意味着您的应用程序是使用动态链接构建的。

    根据我的经验,最安全的方法是:

    下载 Qt 源代码,使用 nmake 构建和安装它们(使用 Visual Studio 命令提示符从菜单开始 -> 应用程序 -> Visual Studio 2008 )。请记住,静态链接应用程序的大小取决于 *.libs 的大小,这些取决于预构建配置,例如,您可以通过关闭某些功能来最小化应用程序的大小(这是MacOSX 的示例配置,只需注意特定于 Windows 的配置并添加适当的平台 - 请参阅 configure.exe --help 了解详细信息):

    ./configure -arch x86 -platform macx-g++ --universal -cocoa -debug-and-release -opensource -static -fast -no-accessibility -no-sql-sqlite -no-qt3support -no-opengl -no-openvg -qt-zlib -no-gif -no-libmng -qt-libmng -no-libtiff -qt-libjpeg -no-3dnow -sse -no-sse2 -no-openssl -no-dbus -no-phonon -no-multimedia -no-audio-backend -webkit -no-script -no-scripttools -no-declarative -nomake demos -nomake examples -no-exceptions -no-accessibility -confirm-license
    

    为您的 Qt 项目 (here) 安装、设置和使用 Visual Studio 插件。

    祝你好运! :)

    【讨论】:

    • 请注意,静态链接需要许可证或开源代码。
    • @paulm 为什么静态链接需要许可证?这是Qt特有的吗? (我是新来的,所以问)
    • 这是 LGPL/GPL 许可证要求的内容,在 SO 上搜索以查找详细信息
    【解决方案5】:

    我与您分享我的解决方案。在我的 qt creator 4.2.1 上,我执行了以下步骤:

    1) - 我点击了发布,它在我的项目目录中生成了一个文件夹,如下所示:C:\Users\Samir\Documents\Qt-Projects\build-Calculator-Desktop_Qt_5_8_0_MinGW_32bit-Release

    2) - 我打开了终端qt 5.8 for desktop 我导航到我的项目目录.exe 所在的位置。
    3) - 最后,我运行了命令行windeployqt.exe --quick .。此命令允许我生成缺少的库。

    现在一切正常!

    【讨论】:

      猜你喜欢
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      相关资源
      最近更新 更多