【QT】VS下Release报错This application failed to start because no Qt platform plugin could be initialize.

VS2019,cmake程序;debug运行正常,release运行在QAppliacation处异常报错

"This application failed to start because no Qt platform plugin could be initialize.  Reinstalling the application may fix this problem. Available platform plugins are:direct2d(from C:\Qt\Qt5.12.9\5.12.9\mscv2017_64\plugins\platforms),minimal(from C:\Qt\Qt5.12.9\5.12.9\mscv2017_64\plugins\platforms),offscreen(from C:\Qt\Qt5.12.9\5.12.9\mscv2017_64\plugins\platforms),webgl(from C:\Qt\Qt5.12.9\5.12.9\mscv2017_64\plugins\platforms),windows(from C:\Qt\Qt5.12.9\5.12.9\mscv2017_64\plugins\platforms)."

【根因分析】

        依赖的程序、资源未加载或加载了不正确的文件。

        而debug和release不一样的原因,是cmake中的编译方式不一致导致的,可能在一些链接的时候导致的不一致。

(在使用VS和Qt混合编程时,混用Release和Debug版本可能会导致一些问题。一个常见的问题是版本不兼容。具体来说,当你的lib库项目使用Debug版本编译,而调用该库的项目使用Release版本编译时,可能会出现一些错误。)

(Debug和Release的本质区别在于它们的编译方式不同。其中一个明显的外在表现是Debug版本的静态链接库通常比Release版本的大很多。这意味着在混合编程时,由于版本不匹配,可能会导致链接错误或其他运行时错误。)

大致思路如下:

这个错误通常表明在 release 模式下,Qt 应用程序找不到正确的平台插件。这可能是由于一些路径设置或文件缺失导致的。以下是一些可能的解决方案:

1.检查 Qt 部署:


2.确保在发布版本中包含了 Qt 平台插件(例如,qwindows.dll)并且放置在可执行文件所在目录的 platforms 文件夹中。你可以手动将这些插件复制到发布目录,或者使用 Qt 的部署工具(windeployqt)来自动部署。


3.检查路径设置:


4.在 release 模式下,确保 Qt 相关的路径设置是正确的。在 Visual Studio 中,打开项目属性,然后检查 VC++ 目录和链接器设置,确保它们包含了正确的 Qt 头文件和库文件路径。


5.检查 Qt 版本匹配:


6.确保在构建时使用的 Qt 版本与运行时使用的版本匹配。不同版本的 Qt 可能具有不同的平台插件和库文件。


7.查看依赖项:


8.使用工具(例如 Dependency Walker)检查你的发布版本中是否有缺失的依赖项。确保所有需要的 Qt 相关的 DLL 文件都可以在发布版本的目录中找到。


9.使用静态链接库:


10.尝试将 Qt 库从动态链接库切换为静态链接库。这可以通过在项目属性中的“配置属性” > “C/C++” > “代码生成”中设置运行库类型来完成。


11.检查运行时库设置:


12.在项目属性中,检查“配置属性” > “C/C++” > “代码生成”,确保在 release 模式下使用了正确的运行时库设置。通常在 release 模式下,你可能希望选择“多线程(/MT)”或“多线程调试(/MTd)”。


13.重新生成项目:

在进行任何更改之后,确保重新生成你的项目。

【其余搜索的补充】

1、vs+qt Debug正常Release报错

【解决方案】

注意,如下的解决方案中,需要注意的是;有些使用之后,需要重启电脑;有些使用之后,需要全部重新生成代码

【方法1】查看电脑的环境变量,是否有QT相关的变量;若没有,则设置环境变量

高级系统设置---》环境变量---》系统变量中添加如下地址:

变量名:QT_QPA_PLATFORM_PLUGIN_PATH

变量值:C:\Qt\Qt5.12.9\5.12.9\msvc2017_64\plugins\platforms

重启电脑,查看是否有效(新的环境变量需要重启后才能被系统识别)

【方法2】windows系统(qdirect2d.dll、...)、Linux系统(qdirect2dd.dll、...)--会多一个 d

【方法3】将Qt目录下plugin文件夹中的platforms文件夹直接复制到项目.exe的运行目录下

【方法4】查看.exe软件运行时,调用的dll文件,发现问题所在。

这种一般使用于:调用了其他路径下的QT的qwindows.dll等 报错。

 查看.exe软件运行时,调用的dll文件的方法:

【方法1】使用process explorer软件查看

详细见https://blog.youkuaiyun.com/qq_41155814/article/details/116655478

【方法2】使用dumpbin /dependents(命令行,VS自带的)

dumpbin /dependents your_application.exe
//替换 your_application.exe 为你实际的可执行文件名称,并且在命令提示符中运行。

也可以使用如下命令,将.dll信息,写到文本文档中

dumpbin /dependents your_application.exe > output.txt
// 替换 your_application.exe 为你实际的可执行文件名称
// output.txt为写处的信息的文本文档

 使用命令之后,出现结果大致如下:

【弊端】无法查看到具体的.dll的依赖的路径

【提示】若出现,无法打开该exe,查看是否exe的名字拼写错误

【方法5】查看环境变量,在系统环境的Path中,是否有在qt相关的环境变量前的变量,也有依赖qt库;导致运行时链接错误

【方法6】将动态编译的方式,改为使用静态编译

如果你在构建 Qt 应用程序时使用了动态链接库(.dll),尝试改为使用静态链接库(.lib)。这样会将 Qt 平台插件嵌入到你的应用程序中,避免了在运行时缺少插件的问题。

【方法7】检查 Qt 版本

确保你在构建时使用的 Qt 版本与你在运行时使用的版本相匹配。不同版本的 Qt 可能会导致兼容性问题。

如果以上方法没有解决问题,你可能需要进一步检查你的项目配置,确保 release 模式下包含了正确的 Qt 相关设置和路径。同时,确保你没有在 release 版本中意外地删除了必要的文件或配置。

当安装并试图运行一个基于Qt的应用程序时,如果收到 "This application failed to start because no Qt platform plugin could be initialized" 的错误,这意味着您的系统上缺少Qt支持的图形库或平台插件。Qt是一个跨平台的框架,它依赖于不同的平台插件来提供相应的图形界面功能,如窗口、控件等。 解决这个问题通常需要以下几个步骤: 1. **检查平台设置**:确认你的应用程序是在与你的计算机操作系统相匹配的平台上编译的。Qt支持Windows、Linux、macOS等多种平台,你需要确保你正在使用的版本与你的系统兼容。 2. **安装必要的Qt插件**:对于Windows,可能是Qwindows、Qdirect2D或其他对应图形技术的插件缺失。你可以在Qt官方网站下载并安装对应的平台支持组件(例如Qt for Windows SDK)。 3. **环境变量配置**:确保QT_*环境变量指向了正确的Qt安装路径,特别是包含平台插件的路径。 4. **重新编译应用**:如果你之前手动修改过应用程序,可能会导致环境设置冲突。尝试从源代码重新构建应用,确保所有依赖项都被正确链接。 5. **清理并重新安装Qt**:有时候问题可能出在安装过程中。卸载现有的Qt安装,然后按照官方指南重新安装。 6. **更新显卡驱动**:如果涉及到GPU相关的插件,确保显卡驱动是最新的,并且与你的Qt版本兼容。 完成上述步骤后,尝试再次运行应用程序。如果问题依然存在,可能需要进一步排查其他潜在问题,比如应用程序配置问题或硬件兼容性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值