c++ - QT6:“qt.qpa.plugin:即使找到了,也无法在“”中加载 Qt 平台插件“xcb”。”
问题描述
我知道关于这个话题有很多答案,但是没有一个对我有帮助。我正在通过 Oracle VM Virtual Box 使用 Ubunty 20.04,我遇到了与所有其他人完全相同的错误。在使用官方 Qt 手册构建 Qt6 源代码后,我正在尝试运行不同的项目来测试一切是否正常。控制台类型的项目可以正常构建和运行。没有错误。不幸的是,当我尝试运行 Widget 类型的应用程序时,它会因众所周知的错误而失败。
t.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: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
我的同事在他的 Ubuntu 上让 Qt6 正常工作,看到我libqxcb.so
在.../qtbase/plugins/platforms中没有并与我分享。不幸的是,它并没有太大帮助。只有错误消息发生了一些变化:它说插件已找到,但无法使用。我尝试了来自 Internet 的不同解决方案,但没有一个有帮助。最受欢迎的之一
sudo apt install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0
没有影响。
此外,还有更详细的环境变量输出QT_DEBUG_PLUGINS=1
:
QFactoryLoader::QFactoryLoader() checking directory path "/home/curiouspan/qt6-build/qtbase/plugins/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqeglfs.so"
Found metadata in lib /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqeglfs.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"eglfs"
]
},
"archreq": 1,
"className": "QEglFSIntegrationPlugin",
"debug": true,
"version": 393728
}
Got keys from plugin meta data QList("eglfs")
QFactoryLoader::QFactoryLoader() looking at "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqlinuxfb.so"
Found metadata in lib /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqlinuxfb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"linuxfb"
]
},
"archreq": 1,
"className": "QLinuxFbIntegrationPlugin",
"debug": true,
"version": 393728
}
Got keys from plugin meta data QList("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqminimal.so"
Found metadata in lib /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqminimal.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"minimal"
]
},
"archreq": 1,
"className": "QMinimalIntegrationPlugin",
"debug": true,
"version": 393728
}
Got keys from plugin meta data QList("minimal")
QFactoryLoader::QFactoryLoader() looking at "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqminimalegl.so"
Found metadata in lib /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqminimalegl.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"minimalegl"
]
},
"archreq": 1,
"className": "QMinimalEglIntegrationPlugin",
"debug": true,
"version": 393728
}
Got keys from plugin meta data QList("minimalegl")
QFactoryLoader::QFactoryLoader() looking at "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqoffscreen.so"
Found metadata in lib /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqoffscreen.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"offscreen"
]
},
"archreq": 1,
"className": "QOffscreenIntegrationPlugin",
"debug": true,
"version": 393728
}
Got keys from plugin meta data QList("offscreen")
QFactoryLoader::QFactoryLoader() looking at "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqvnc.so"
Found metadata in lib /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqvnc.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"vnc"
]
},
"archreq": 1,
"className": "QVncIntegrationPlugin",
"debug": true,
"version": 393728
}
Got keys from plugin meta data QList("vnc")
QFactoryLoader::QFactoryLoader() looking at "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqxcb.so"
Found metadata in lib /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"archreq": 0,
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 393728
}
Got keys from plugin meta data QList("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/home/curiouspan/QtTestProjects/build-WidgetTestApp-Own_Desktop-Debug/platforms" ...
Cannot load library /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqxcb.so: (libQt6XcbQpa.so.6: cannot open shared object file: No such file or directory)
QLibraryPrivate::loadPlugin failed on "/home/curiouspan/qt6-build/qtbase/plugins/platforms/libqxcb.so" : "Cannot load library /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqxcb.so: (libQt6XcbQpa.so.6: cannot open shared object file: No such file or directory)"
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: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
它显示libQt6XcbQpa.so.6
文件丢失。运行ldd /home/curiouspan/qt6-build/qtbase/plugins/platforms/libqxcb.so
显示依赖关系后,我得到以下输出:
linux-vdso.so.1 (0x00007fffc8770000)
libQt6XcbQpa.so.6 => not found
libQt6Gui.so.6 => /home/curiouspan/qt6-build/qtbase/plugins/platforms/../../lib/libQt6Gui.so.6 (0x00007f0873306000)
libQt6Core.so.6 => /home/curiouspan/qt6-build/qtbase/plugins/platforms/../../lib/libQt6Core.so.6 (0x00007f087295d000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f087277c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f087258a000)
libEGL.so.1 => /lib/x86_64-linux-gnu/libEGL.so.1 (0x00007f0872573000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f0872436000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0872430000)
libQt6DBus.so.6 => /home/curiouspan/qt6-build/qtbase/plugins/platforms/../../lib/libQt6DBus.so.6 (0x00007f0872262000)
libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f087222e000)
libOpenGL.so.0 => /lib/x86_64-linux-gnu/libOpenGL.so.0 (0x00007f0872202000)
所以这个文件真的不见了。什么可能是潜在的问题,我该如何解决?先感谢您!
解决方案
感谢所有试图帮助解决我的问题的人。答案来自官方 Qt 论坛。解决方案链接:https ://forum.qt.io/topic/127696/qt-qpa-plugin-could-not-load-the-qt-platform-plugin-xcb-in-even-though-it-was-找到/22
基本上,问题在于缺乏一些依赖关系。由于 Qt6 的特殊性,我不得不安装 Qt5 构建手册中的依赖项。很难说是缺少哪个依赖导致了问题,但是在安装了所有依赖并重新配置和重建源代码之后,项目可以正常构建。
推荐阅读
- flutter - Dart 中可扩展类附近的尖括号是什么意思?
- neovim - 在没有可用 Git 的情况下安装 neovim 插件
- angular - 为什么这个 Angular Rxjs 观察者不退订?
- excel - 重新计算功能
- reactjs - 应避免通过 props 传递组件类型
- java - 修复在 Android Studio / Kotlin 中单击按钮时出现的错误?
- mysql - H2 varchar 列区分大小写
- visual-studio - 在 Visual Studio SSIS 中过滤日期列(派生列)
- amp-html - Accelerated Mobile Pages:地图区域替代方案
- php - 这个 post 方法代码可能有什么问题?