如何在没有安装Qt的情况下运行Qt程序?

时间:2014-07-17 01:14:19

标签: c++ windows qt deployment qt5

我已经用Qt5.3.1编写了一个程序,并在我的开发机器上运行它可以正常工作。我将所有必需的.dll文件复制到我的.exe所在的文件夹中。这些是:

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.DLL
  • 的libstdc ++ - 6.dll

现在我想在没有安装Qt的机器上运行该程序。我怎么做?用户不必为了使用程序而安装IDE,对吧?

开发机器的工作原理:

  • Windows 8
  • Qt 5.3.1

部署平台是:

  • Windows Vista
  • 没有安装Qt,但所有必要的.dll都已到位

我得到的错误是第一个:

  

此应用程序无法启动,因为它无法找到或加载Qt平台插件" windows"。   重新安装应用程序可能会解决此问题。

下一条错误消息是:

  

此应用程序请求Runtime以不寻常的方式终止。请联系支持部门。

然后程序崩溃了。 但是如果我安装Qt5.3.1就行了。所以它与c:/Qt目录

中的文件有关

8 个答案:

答案 0 :(得分:8)

This application failed to start because it could not find or load the Qt platform plugin "windows".

对于此问题,您应将插件{QTSDK}/plugins/platforms/qwindows.dll复制到{YOUR_EXE_DIR}/platforms/qwindows.dll

答案 1 :(得分:6)

简短的回答是您需要进行静态构建,还是需要重新分发Qt共享库DLL。如果您正在寻找较小的文件大小,静态构建通常会更好,但如果您在LGPL license下使用Qt5,则可能会对此方法产生法律影响。我不是律师,但您可以在LGPL section 4.1中阅读有关LGPL关联规则的内容。

答案很长,你应该阅读一般Qt5 deployment guideQt5 for Windows deployment guide。这些都有很多细节。

答案 2 :(得分:2)

我也遇到过这个问题,

在您的Qt目录中,使用正确的Qt版本 C:\ Qt的\ Qt5.2.1 \ 5.2.1 \ mingw48_32 \插件\平台\

将qwindows.dll复制到您的可执行文件旁边的新文件夹中,这样您的列表就会

  • Qt5Widgets.dll
  • Qt5Network.dll
  • Qt5Gui.dll
  • Qt5Core.dll
  • icudt51.dll
  • icuin51.dll
  • icuuc51.dll
  • libgcc_s_dw2-1.dll
  • libwinpthread-1.DLL
  • 的libstdc ++ - 6.dll
  • 平台/ qwindows.dll

答案 3 :(得分:2)

更好的解决方案是使用Qt SDK应用程序“ windeployqt”。它用于根据目标平台将所有必需的dll和插件复制到您的应用程序文件夹中。然后,您可以在另一台计算机上运行它。这里是文档:https://doc.qt.io/Qt-5/windows-deployment.html

例如,如果您的可执行文件是使用mingw53_32构建的,并且您的可执行文件位于“ C:\ example_qtapp”中:

QT_INSTALL_DIR\minqw53_32\bin\windeployqt.exe c:\example_qtapp

答案 4 :(得分:1)

您应该将Qt DLL放在可执行文件的发行版本中。这些是Qt5Core.dllQt5Gui.dll,可能还有您使用过的其他模块。这些dll文件位于bin文件夹中已安装的Qt目录中。您还应该放置LIBGCC_S_DW2-1.DLLMINGWM10.DLLLIBSTDC++-6.dll,以防您使用MinGW。

如果您使用的是插件,则应将其dll放在exe旁边名为plugins的文件夹中。如果您使用图标和图片,则应将qico.dllqsvg.dll的dll发送到名为imageformats的文件夹中。

答案 5 :(得分:0)

如果Qt dll在那里,它们应该可以工作。我的猜测是你错过了IDE的运行时库/ dll。例如,如果您使用Visual Studio 2010作为IDE,则需要安装VS2010 Redistributable x86 / x64 link,具体取决于您的体系结构。

答案 6 :(得分:0)

您还应该将{QTSDK} / plugins复制到可执行文件所在的目录。然后在相同位置(带可执行文件)创建qt.conf,其中包含以下内容:

[Paths]
Plugins=plugins

然后,运行你的程序。我在linux上做了同样的事情。

答案 7 :(得分:0)

在您的应用程序文件夹中,按住SHIFT键并从鼠标右键单击。 您将看到-在此处打开命令窗口

  1. 单击此处打开命令窗口
  2. 键入windeployqt.exe app_name.exe-参数和HIT ENTER

示例:

windeployqt.exe APP_NAME.EXE --release --no-translations --no-system-d3d-compiler --no-compiler-runtime --no-angle --no-opengl-sw