我已经用Qt5.3.1编写了一个程序,并在我的开发机器上运行它可以正常工作。我将所有必需的.dll文件复制到我的.exe所在的文件夹中。这些是:
现在我想在没有安装Qt的机器上运行该程序。我怎么做?用户不必为了使用程序而安装IDE,对吧?
开发机器的工作原理:
部署平台是:
我得到的错误是第一个:
此应用程序无法启动,因为它无法找到或加载Qt平台插件" windows"。 重新安装应用程序可能会解决此问题。
下一条错误消息是:
此应用程序请求Runtime以不寻常的方式终止。请联系支持部门。
然后程序崩溃了。 但是如果我安装Qt5.3.1就行了。所以它与c:/Qt
目录
答案 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 guide和Qt5 for Windows deployment guide。这些都有很多细节。
答案 2 :(得分:2)
我也遇到过这个问题,
在您的Qt目录中,使用正确的Qt版本 C:\ Qt的\ Qt5.2.1 \ 5.2.1 \ mingw48_32 \插件\平台\
将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.dll
,Qt5Gui.dll
,可能还有您使用过的其他模块。这些dll文件位于bin文件夹中已安装的Qt目录中。您还应该放置LIBGCC_S_DW2-1.DLL
,MINGWM10.DLL
和LIBSTDC++-6.dll
,以防您使用MinGW。
如果您使用的是插件,则应将其dll放在exe旁边名为plugins
的文件夹中。如果您使用图标和图片,则应将qico.dll
和qsvg.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键并从鼠标右键单击。 您将看到-在此处打开命令窗口
示例:
windeployqt.exe APP_NAME.EXE --release --no-translations --no-system-d3d-compiler --no-compiler-runtime --no-angle --no-opengl-sw