部署后QT缺少dll

时间:2014-04-25 06:22:56

标签: c++ qt

我已经复制了QT所需的所有dll,并且我的应用程序在我的Windows服务器计算机上正常运行。

但是,当尝试在Windows 7机器上运行它时,我收到以下消息:

  

此应用程序无法启动,因为它无法找到或加载他   Qt平台插件" windows"。

     

重新安装应用程序可能会解决此问题。

我在这里缺少什么想法?

2 个答案:

答案 0 :(得分:3)

前一段时间我对此不屑一顾。事实证明,这不是因为缺少qwindows.dll,而是libEGL.dlllibGLESv2.dll之一。这很棘手,因为依赖walker不会将这些lib显示为直接依赖。

如果您想在您的开发计算机上进行测试,您的应用是否具有所有必需的库,请启动控制台问题SET PATH=cd到您的应用目录并运行它。

这是我的应用正在使用的dll的完整列表(仅限Qt 5.2 / QtQuick app,其余为C ++)。 QtQuick很不错,但Qt依赖的大小有点吓人:

icu*.dll - 取决于您是否使用ICU编译 libEGL.dll libGLESv2.dll Qt5Core.dll Qt5Gui.dll Qt5Network.dll Qt5Qml.dll Qt5Quick.dll Qt5Widgets.dll

答案 1 :(得分:1)

广泛使用的解决方案是将所有必要的图书馆放在应用程序的文件夹中 图书馆应用需要什么?
运行应用程序并查看错误消息:

The program can't start because <Library name> is missing from your computer.  
Try reinstalling the program to fix this problem

库集取决于Qt版本。运行几次应用程序,每次复制所需的lib,你找到了需要申请的东西 在我的情况下(Qt 5.2.1)有

icudt51.dll, 
icuin51.dll, 
icuuc51.dll, 
libgcc_s_dw2-1.dll, 
libstdc++-6.dll, 
libwinpthread-1.dll, 
Qt5Core.dll, 
Qt5Gui.dll, 
Qt5Widgets.dll.

您可以在Qt安装文件夹中找到的所有库。但是不要使用Tools\QtCreator文件夹中的库,因为QtCreator有这些库的另一个版本!

如果出现错误:
此应用程序无法启动,因为它无法找到或加载Qt平台插件windows。重新安装应用程序可能会解决此问题 您应该创建文件夹platforms并将qwindows.dll复制到其中 如果仍然有错误,您应该在应用程序的文件夹中创建qt.conf文件,内容为:

[Paths]
Plugins=plugins

此解决方案在https://qt-project.org/forums/viewthread/37265中有所描述 有关qt.conf的更多信息,请访问http://qt-project.org/doc/qt-5/qt-conf.html

在Qt的最新版本中,您可以找到部署工具(自5.2起)。此工具查找应用程序所需的库并复制到应用程序文件夹中。你可以运行这样的东西:

call c:\Qt\QtX.Y.Z\X.Y.Z\mingw48_32\bin\qtenv2.bat
cd /d "c:\path\to\your\application\folder"
windeployqt.exe your_application.exe

一般来说效果很好。但是我注意到有些库没有被复制,但你可以通过方法找到你的帖子。您可以找到更多有用的信息 http://qt-project.org/doc/qt-5/windows-deployment.html

在极少数情况下,如果某些库丢失但未出现在上面的错误消息中,则可能会出现此错误。示例:Qt 5.1.1: Application failed to start because platform plugin "windows" is missing
我不是在这种情况下,所以我不能说更多。