C++ 如何为Qt应用程序创建可执行文件?

C++ 如何为Qt应用程序创建可执行文件?,c++,windows,visual-studio,qt,C++,Windows,Visual Studio,Qt,我一直在互联网上搜索一些关于这方面的有用和清晰的信息,很烦人的是这样一件小事是如此的难做 我需要的是为我的Qt项目创建一个可执行文件,以便在其他计算机上运行它。我的项目在Qt Creator中运行得很好,但是当我尝试运行在release文件夹中创建的可执行文件时,我得到了一些关于缺少某个dll的错误,尽管我已经将它们都放在了My.exe的同一目录中,但现在我得到了一些关于dll(QtCore4.dll)中过程入口点的错误 这个解决方案看起来像是一个静态链接,我已经找到了很多关于它的信息,但是没有

我一直在互联网上搜索一些关于这方面的有用和清晰的信息,很烦人的是这样一件小事是如此的难做

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

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

  • 如上所述,使用在release文件夹中创建的可执行文件
  • 静态链接,遵循本教程(以及其他许多教程,几乎都是一样的):但是在“配置-静态”过程中,我遇到了以下错误:NMAKE:fatal error U1077:'“c:\Arquivos de programas\Microsoft Visual Studio 9。 0\VC\BIN\cl.EXE“':返回代码“0x2” 停止 生成qmake失败,返回代码2

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

基本上,你们必须在Qt树的深处寻找mingw子文件夹,Qt实用程序驻留在其中,并复制所需的dll

以下是基于Qt4.7.4的步骤,用于使用正确的共享库打包应用程序

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

    • mingwm10.dll
    • libgcc_s_dw2-1.dll
    • QtCore4.dll
    • QtGui4.dll
    我只是以这种方式构建、测试和部署了一个虚拟项目


  • 所以您下载了QtSDK,并希望将Qt库静态链接到您的应用程序中,对吗

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

    根据我的经验,让一切正常运行的最安全方法是:

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

    为您的Qt项目()安装、设置和使用Visual Studio附加模块


    祝你好运!:)

    这是我所做的,我在一段时间后把它投入工作;确保程序在Qtcreator内部生成后,转到包含exe的目录并双击它。(我使用的是windows,不知道在其他平台上是否相同)。将弹出一个窗口,告诉您缺少哪个.dll。转到安装Qt的目录,并在搜索栏中键入确切的名称(Windows 7中的右上角)和dll应显示在搜索结果中。右键单击并选择“打开文件位置”。复制exe所在的文件。再次双击exe。如果缺少另一个.dll,则重复相同的操作,直到没有缺少。最后,您的程序应运行。 希望这有帮助。

    执行以下步骤:

    1-打开qt命令行窗口

    2-转到存在.exe文件的目录(使用cd命令)

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

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


    查看我以前发现的这个相关问题,但我得到了错误NMAKE:致命错误U1077:““c:\Arquivos de programas\Microsoft Visual Studio 9.0\VC\BIN\cl.EXE”:返回代码“0x2”停止。构建qmake失败,当我尝试运行配置时返回代码2,我找不到答案..但是谢谢。我没有那个目录(明w\bin),可能是因为我使用的是Visual Studio?无论如何,我将所有dll文件从那里复制到我的.exe文件中,它成功了。这不是最好的解决方案,但目前仍能正常工作。谢谢。您可以开始逐个删除dll文件,并检查程序是否仍在运行。这样,您就可以轻松确定需要哪些dll文件。这就是我要做的通常在处理DLL依赖关系时会这样做。我不知道您是否在VS2008中配置了.PRO文件,但某些qt功能需要自己的DLL(QtSql等)。大多数情况下,只使用QtCore.dll和QtGui.dll就可以了。当您使用诸如网络通信、sql、webkit等高级功能时,请查看文档:您可能会获得指向所用库的指针。您还可以使用Dependency Walker查看exe需要哪些dll。请注意,静态链接需要许可证或代码开源。@paulm为什么静态链接需要许可证?这是Qt特有的吗?(我是新来的,所以问)这是LGPL/GPL许可证的要求,在这里搜索以查找详细信息
    ./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