(已解决)报错: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.
环境
发生原因
- 我本人的发生原因应该是代码里涉及到的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库卸载并重装
- 所需要安装的依赖项可以见上面提到的参考链接
相关文章:
-
2.3清除后重新构建,QT可能会往ui_xxxxx.h文件里自动添加作用域,会导致报错,目前没有找到禁止qt自己添加作用域的方法,遇到了记得手动删除掉。直接选中旧项目的界面中所有的…
-
作为qt的初学者,开始入门qt的时候,很多东西其实也不是很会,调试好的软件如何发给别人使用,如何去做,也不是很清楚的,自己也查了很多资料才渐渐明白。开始学习的时候,不同分辨率屏幕适…
-
基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)仿真图proteus7.8及以上程序编译器:keil 4/keil 5编程语言:…
-
使用ffmpeg压缩视频
视频每压缩一次,会小一点点,我这里的来源只是到2分钟内的视频,所以可以多次压缩。太大的视频就不要这样了,根据实际情况来吧。请注意,压缩视频可能会导致视频质量的损...
[阅读全文]
-
有 n 个人,每个人都有一个 0 到 n-1 的唯一 id 。给你数组 watchedVideos 和 friends ,其中 watchedVideos[i] 和 frie…
-
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论