Qt 报错qt.qpa.plugin: Could not find the Qt platform plugin “xcb“ in ““【已解决】

报错qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""

一、问题描述

    1. 使用linuxdeployqt打包Qt程序,在一台电脑上正常运行,拷贝到另一台电脑上报错:
bash 复制代码
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    1. 打开qtcreator或其他Qt程序,报如上错误.

解决qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "":https://blog.csdn.net/Mr_guocxy/article/details/139812895

解决qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "":https://blog.csdn.net/sksukai/article/details/107325930

二、解决方案

问题原因是没有找到相关库,或者相关库的依赖有问题。

    1. 设置环境变量,使程序可找到libqxcb.so
bash 复制代码
export QT_QPA_PLATFORM_PLUGIN_PATH=/xxx/qt的安装目录/plugins/platforms
    1. 可使用qt.conf文件,指定相关路径Plugins = plugins
      如果使用linuxdeployqt,可能会自动生成 (测试了不加-qmake选项,会自动生成qt.conf,如有兴趣可继续深入linuxdeployqt源码).
bash 复制代码
# Generated by linuxdeployqt
# https://github.com/probonopd/linuxdeployqt/
[Paths]
Prefix = ./
Plugins = plugins
Imports = qml
Qml2Imports = qml

三、关于qt.conf

官方文档推荐使用qt.conf

  • 所有Qt图形用户界面(GUI)应用程序都需要一个实现Qt平台抽象(QPA)层的插件。对于Linux/X11系统,平台插件的名称是libqxcb.so。此文件必须位于您的发行版目录下的特定子目录中(默认为platforms)。或者,也可以按照下文所述,调整Qt用于查找其插件的搜索路径。
    Qt插件的搜索路径(以及其他一些路径)是硬编码到QtCore库中的。默认情况下,第一个插件搜索路径将被硬编码为/path/to/Qt/plugins。如上所述,使用预定路径存在某些缺点,因此您需要检查各种替代方案以确保找到Qt插件:使用qt.conf。这是推荐的方法,因为它提供了最大的灵活性。
    1. 作用: qt.conf 文件来覆盖路径或指定要传递给平台插件的参数

qt.conf 文件可用于覆盖编译到 Qt XML 库中的硬编码路径。这些路径可通过QLibraryInfo 类访问。如果没有qt.conf ,QLibraryInfo 中的函数将返回这些硬编码路径;否则,它们将返回qt.conf 中指定的路径。如果没有qt.conf ,Qt XML 库将使用硬编码路径来查找插件、翻译等。这些路径可能不存在于目标系统中,也可能无法访问。因此,您可能需要qt.conf 来让 Qt XML 库在其他地方查找。

    1. 位置,QLibraryInfo 将从以下位置之一加载qt.conf:
  • :/qt/etc/qt.conf 使用资源系统
  • 在 macOS 上,在应用程序捆绑包内的资源目录中, assistant.app/Contents/Resources/qt.conf
  • 包含应用程序可执行文件的目录中,即QCoreApplication::applicationDirPath() +QDir::separator() + "qt.conf"
    1. 文件参数:使用qt.conf 文件中指定的绝对路径。所有路径都相对于Prefix 。在 Windows 和 X11 上,Prefix 相对于包含应用程序可执行文件的目录。在 macOS 上,Prefix 与应用程序捆绑包中的Contents 相对。
相关推荐
Ulyanov1 小时前
Python实现6-DOF刚体仿真器(下)——环境扰动与控制闭环
开发语言·python·算法·系统仿真·雷达电子对抗·导引头
小小的木头人2 小时前
Python 批量解析 Excel 经纬度,调用高德地图 API 获取中文地址
开发语言·python·excel
nzz_1712143 小时前
PHP程序员转型AI岗位指南:核心技能、北京就业市场与转型路径分析
开发语言·人工智能·php
Risehuxyc3 小时前
C# 将doc转换为docx
开发语言·c#·xhtml
多加点辣也没关系4 小时前
JavaScript|第24章:事件循环与并发模型
开发语言·javascript·ecmascript
ん贤4 小时前
怎么设计,才算一个优秀审计模块
大数据·开发语言·设计·审计
l1t4 小时前
测试用rust重写的postgresql: pgrust
开发语言·postgresql·rust
2501_948106914 小时前
计算机毕业设计之jsp-智慧旅游分享平台
java·开发语言·spark·汽车·课程设计·旅游
阿里云云原生5 小时前
Agent 不再是“玩具”!AgentScope Java 2.0 GA 发布:构建企业级分布式智能体底座
java·开发语言·分布式·agentscope
BIM云平台开发5 小时前
【App.vue里跟踪页面跳转和用户ID】
开发语言·前端·javascript