(已解决)报错:Could not load the Qt platform plugin “xcb“

完整报错信息

  • QObject::moveToThread: Current thread (0x6a879f0) is not the object's thread (0x61bb590).
    Cannot move to target thread (0x6a879f0)
  • qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
  • Available platform plugins are: xcb, eglfs, minimal, minimalegl, offscreen, vnc, webgl.

环境

  • 服务器环境为ubuntu18.04

发生原因

  • 我本人的发生原因应该是代码里涉及到的opencv库调用了qt库来进行一些图形用户界面(GUI)输出,但是服务器上的xcb依赖除了问题,导致上述报错

解决方案

  • 参考github链接
  • 方案一:设置QT_QPA_PLATFORM=offscreen环境变量(治标不治本)
    • 如果你的开发工作不需要图形用户界面(GUI)输出,或者你正在服务器环境中运行自动化测试或批处理作业,那么设置QT_QPA_PLATFORM=offscreen环境变量可能是一个更简单且有效的选择。这种方法允许你的应用程序在没有可用屏幕的环境中运行,避免了因尝试访问缺失的图形环境而导致的错误。
    • 适用场景:
      • 服务器端应用程序,不需要显示或交互的图形界面。
      • 自动化脚本和测试,这些脚本需要运行Qt应用程序但不需要GUI。
      • 开发环境受限,如无头服务器或容器环境。
    • 实现方式
      • 在终端输入export QT_QPA_PLATFORM=offscreen从而将该环境变量临时修改为offscreen,该修改在关闭当前终端后会自动生效
      • 要检查当前该环境变量的值,可以使用命令echo $QT_QPA_PLATFORM,如果这个变量没有被设置,命令不会输出任何内容。
  • 方案二:安装xcb库及相关依赖
    • 必要时可以考虑将已安装的xcb库卸载并重装
    • 所需要安装的依赖项可以见上面提到的参考链接
相关推荐
长孙豪翔几秒前
引发事件的问题
java·linux·数据库
小张成长计划..4 分钟前
【Linux】7:第一个系统程序-进度条
linux·运维·服务器
pp起床5 分钟前
黑马点评 - 短信验证码登录实现
java·开发语言·tomcat
芒鸽5 分钟前
在仓颉语言里造一个没有反射的服务端框架
开发语言·华为·harmonyos
尘中远11 分钟前
【Qwt 7.0 系列】总体架构解析 —— 从单体到三库模块化的演进
qt·matplotlib·绘图·qwt·科学绘图
CodeStats15 分钟前
《源纹天书》第121-125章:源匠归来——全栈重构与归元圣域的2.0时代
java·开发语言·源纹天书
binbin_5216 分钟前
UIAbility 与 WindowStage:窗口创建、加载、销毁的完整链路
开发语言·javascript·深度学习·华为·harmonyos
AI人工智能+电脑小能手16 分钟前
【大白话说Java面试题 第154题】【06_Spring篇】第14题:Spring 支持的 Bean 作用域
java·开发语言·spring·面试
枳实-叶21 分钟前
【Linux驱动开发】第23天:spi_driver 的 probe / remove 函数实现规范
linux·驱动开发·c#
李子琪。23 分钟前
云计算虚拟化技术全解析:从理论到实践
linux·centos·云计算