QT程序或dll报错This application failed to start because it could not find or load the Qt platform plugin

本文详细解析了QT程序在运行时出现qwindows.dll等DLL文件缺失的常见问题及解决方案,介绍了如何通过调整依赖路径或使用windeployqt工具自动部署所需DLL文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个错误提示代表了程序在运行环境路径下找不到platforms目录下的qwindows.dll文件,所以将包含qwindows.dll文件的platforms目录放到exe同级目录下就可以了;

当然,你有可能因为其它QT依赖文件缺失还会报其它错误,一般情况下在exe同级目录下还需要Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll这几个文件,如果你的程序还是用其它QT库(如网络开发需要Qt5NetWork.dll)的话,建议使用Qt自带工具windeployqt运行命令: windeployqt  你的exe路径 ,如果使用了qml的话则命令为: windeployqt  你的exe路径  -qmldir 你的qml路径 ,这条命令会将相关的dll都放到exe同级目录下,不过它可能会将不必要的dll也拷贝进来,可以通过程序启动后再全选删除dll(依赖的dll被占用是删不掉了,注意QtQuick*相关目录(如果使用了qml的话)是存放依赖qml的不能删除);

如果你是使用QT编写的dll(比如为EXCEL编写的插件),那么以上方法就会有些不太合适了(总不能将QT的这么多依赖dll都放到excel.exe同级目录下吧),这个时候我们可以使用QApplication::addLibraryPath来修改依赖dll的路径,比如在DllMain的DLL_PROCESS_ATTACH分支中加入如下代码:

TCHAR cDllPath[MAX_PATH] = {};
GetModuleFileName(hModule, cDllPath, MAX_PATH); // mfc dll则将此行代码放到InitInstance中,并将hModule改为m_hInstance
QString strDllPath = QString::fromWCharArray(cDllPath);
strDllPath = strDllPath.section('\\', 0, -2);
QApplication::addLibraryPath(strDllPath);

将所有依赖dll修改到了你所生成dll的同级目录下,注意由于QtQuick*相关目录是存放依赖qml文件,不会受此段代码影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值