QT在部署后缺少dll
QT missing dll after deploy
我已经从QT
中复制了所需的所有dll,并且我的应用程序在Windows服务器上运行良好。
然而,当试图在Windows7盒子上运行它时,我得到了以下消息:
此应用程序无法启动,因为它找不到或加载Qt平台插件"windows"。
重新安装应用程序可以解决此问题。
你知道我在这里错过了什么吗?
我不久前就为这个问题挠头了。事实证明,这不是由于缺少qwindows.dll
引起的,而是libEGL.dll
或libGLESv2.dll
中的一个引起的。这很棘手,因为依赖性walker并没有将这些lib显示为直接依赖项。
如果你想在你的开发机器上测试你的应用程序是否有所有需要的库,请将控制台问题SET PATH=
、cd
启动到你的应用目录并运行它
这是我的应用程序正在使用的dll的完整列表(仅Qt 5.2/QtQuick应用程序,其余为C++)。QtQuick很好,但Qt依赖关系的大小有点可怕:
icu*.dll
-取决于您是否使用ICU进行了编译libEGL.dll
libGLESv2.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Network.dll
Qt5Qml.dll
Qt5Quick.dll
Qt5Widgets.dll
广泛使用的解决方案将所有必要的库放在应用程序的文件夹中
库应用程序需要什么
运行应用程序并查看错误消息:
The program can't start because <Library name> is missing from your computer.
Try reinstalling the program to fix this problem
库集依赖于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安装文件夹中找到的所有库。但不要使用ToolsQtCreator
文件夹中的库,因为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:QtQtX.Y.ZX.Y.Zmingw48_32binqtenv2.bat
cd /d "c:pathtoyourapplicationfolder"
windeployqt.exe your_application.exe
一般来说,它运行良好。但我注意到有些库并没有被复制,但你可以通过在帖子开始时描述的方法找到。更多有用信息,请访问http://qt-project.org/doc/qt-5/windows-deployment.html
在极少数情况下,如果某个库丢失但没有出现在上面的错误消息中,您可能会出现此错误。示例:问题5.1.1:应用程序无法启动,因为平台插件";窗口";缺少
我没有遇到这种情况,所以我不能再多说了。
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- WinDeployqt 不会为调试应用程序部署 Qwindowsd.dll
- 从Windows 10编译VS2017在Windows 7和…上部署..找不到DLL
- 如何部署C++DLL
- 正确的方法来确保使用Windows Phone应用程序部署C DLL
- 部署Qt-dll文件-找不到windows插件,尽管平台/qwindows.dll存在,因此存在libEGL和libGL
- 如何解决"原生DLL libmbusmaster.dll的问题不见了!请将 DLL 文件部署到与 mbusmaster.net.dll 相同的目录中。
- 部署 .NET C++/CLI DLL 的先决条件
- 不使用Midas.dll c++部署项目
- 编译C dll部署MATLAB代码时出现C2371错误
- Qt在Windows上部署应用程序需要dll
- 部署的 64 位 c# 应用程序无法加载非托管 dll
- QT在部署后缺少dll
- .lib和.dll在c++代码部署到Github期间
- Qt 5.4.0部署问题- msvcrt.dll中缺少vsprintf_s
- 将dll文件复制到ClickOnce部署中的.exe目录