【问题标题】:What does "Could not find the Qt platform plugin "xcb" " means?“找不到 Qt 平台插件“xcb””是什么意思?
【发布时间】:2021-08-26 20:29:54
【问题描述】:

我正在使用 Qt5.15.2 用 C++ 编写软件。我需要将它部署在 Raspberry Pi 4 上,并在 Raspberry 上安装 Qt Creator 和 Qt5.15.2(我知道我也可以进行交叉编译,但我会保留它以备后用)。 当我尝试从 QtCreator 运行该软件时,出现错误:

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.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.

我在谷歌上搜索了这个错误并找到了有关如何解决它的线程,尤其是从带有QT_DEBUG_PLUGINS=1 的终端运行软件

然而,我没有找到清楚解释为什么会发生这种情况。 我的问题如下:

  • 为什么会出现错误?
  • 什么是 xcb 插件?
  • 安装 Qt 时我做错了吗?如果是这样,我做错了什么?
  • 为什么调用QT_DEBUG_PLUGINS=1; 会起作用?
  • 如果我像这样部署我的软件并使用脚本调用QT_DEBUG_PLUGINS=1; ./mySoftwareExec,这是一个好的解决方案还是一个糟糕的解决方案?

我真的很困惑,这对我来说不清楚。 这是我在运行QT_DEBUG_PLUGINS=1before 时的输出(我不明白):

    QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqeglfs.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqeglfs.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "eglfs"
        ]
    },
    "archreq": 0,
    "className": "QEglFSIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("eglfs")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqlinuxfb.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqlinuxfb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "linuxfb"
        ]
    },
    "archreq": 0,
    "className": "QLinuxFbIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqminimal.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqminimal.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "minimal"
        ]
    },
    "archreq": 0,
    "className": "QMinimalIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("minimal")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqminimalegl.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqminimalegl.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "minimalegl"
        ]
    },
    "archreq": 0,
    "className": "QMinimalEglIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("minimalegl")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqoffscreen.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqoffscreen.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "offscreen"
        ]
    },
    "archreq": 0,
    "className": "QOffscreenIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("offscreen")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqvnc.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqvnc.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "vnc"
        ]
    },
    "archreq": 0,
    "className": "QVncIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("vnc")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqwebgl.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqwebgl.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "webgl"
        ]
    },
    "archreq": 0,
    "className": "QWebGLIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("webgl")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforms/libqxcb.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "archreq": 0,
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/platforms" ...
loaded library "/usr/lib/qt5.15.2/plugins/platforms/libqxcb.so"
loaded library "Xcursor"
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/platformthemes" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platformthemes/libqxdgdesktopportal.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platformthemes/libqxdgdesktopportal.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1",
    "MetaData": {
        "Keys": [
            "xdgdesktopportal",
            "flatpak",
            "snap"
        ]
    },
    "archreq": 0,
    "className": "QXdgDesktopPortalThemePlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("xdgdesktopportal", "flatpak", "snap")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/platformthemes" ...
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/platforminputcontexts" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so, metadata=
{
    "IID": "org.qt-project.Qt.QPlatformInputContextFactoryInterface.5.1",
    "MetaData": {
        "Keys": [
            "compose",
            "xim"
        ]
    },
    "archreq": 0,
    "className": "QComposePlatformInputContextPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("compose", "xim")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so, metadata=
{
    "IID": "org.qt-project.Qt.QPlatformInputContextFactoryInterface.5.1",
    "MetaData": {
        "Keys": [
            "ibus"
        ]
    },
    "archreq": 0,
    "className": "QIbusPlatformInputContextPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("ibus")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so, metadata=
{
    "IID": "org.qt-project.Qt.QPlatformInputContextFactoryInterface.5.1",
    "MetaData": {
        "Keys": [
            "qtvirtualkeyboard"
        ]
    },
    "archreq": 0,
    "className": "QVirtualKeyboardPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("qtvirtualkeyboard")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/platforminputcontexts" ...
loaded library "/usr/lib/qt5.15.2/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so"
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/styles" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/styles" ...
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/imageformats" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqgif.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqgif.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "gif"
        ],
        "MimeTypes": [
            "image/gif"
        ]
    },
    "archreq": 0,
    "className": "QGifPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("gif")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqicns.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqicns.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "icns"
        ],
        "MimeTypes": [
            "image/x-icns"
        ]
    },
    "archreq": 0,
    "className": "QICNSPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("icns")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqico.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqico.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "ico",
            "cur"
        ],
        "MimeTypes": [
            "image/vnd.microsoft.icon",
            "image/vnd.microsoft.icon"
        ]
    },
    "archreq": 0,
    "className": "QICOPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("ico", "cur")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqjpeg.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqjpeg.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "jpg",
            "jpeg"
        ],
        "MimeTypes": [
            "image/jpeg",
            "image/jpeg"
        ]
    },
    "archreq": 0,
    "className": "QJpegPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("jpg", "jpeg")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqpdf.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqpdf.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "pdf"
        ],
        "MimeTypes": [
            "application/pdf"
        ]
    },
    "archreq": 0,
    "className": "QPdfPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("pdf")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqsvg.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqsvg.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "svg",
            "svgz"
        ],
        "MimeTypes": [
            "image/svg+xml",
            "image/svg+xml-compressed"
        ]
    },
    "archreq": 0,
    "className": "QSvgPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("svg", "svgz")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqtga.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqtga.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "tga"
        ],
        "MimeTypes": [
            "image/x-tga"
        ]
    },
    "archreq": 0,
    "className": "QTgaPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("tga")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqtiff.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqtiff.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "tiff",
            "tif"
        ],
        "MimeTypes": [
            "image/tiff",
            "image/tiff"
        ]
    },
    "archreq": 0,
    "className": "QTiffPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("tiff", "tif")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqwbmp.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqwbmp.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "wbmp"
        ],
        "MimeTypes": [
            "image/vnd.wap.wbmp"
        ]
    },
    "archreq": 0,
    "className": "QWbmpPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("wbmp")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/imageformats/libqwebp.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/imageformats/libqwebp.so, metadata=
{
    "IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
    "MetaData": {
        "Keys": [
            "webp"
        ],
        "MimeTypes": [
            "image/webp"
        ]
    },
    "archreq": 0,
    "className": "QWebpPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("webp")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/imageformats" ...
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqgif.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqicns.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqico.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqjpeg.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqpdf.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqsvg.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqtga.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqtiff.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqwbmp.so"
loaded library "/usr/lib/qt5.15.2/plugins/imageformats/libqwebp.so"
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/iconengines" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/iconengines/libqsvgicon.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/iconengines/libqsvgicon.so, metadata=
{
    "IID": "org.qt-project.Qt.QIconEngineFactoryInterface",
    "MetaData": {
        "Keys": [
            "svg",
            "svgz",
            "svg.gz"
        ]
    },
    "archreq": 0,
    "className": "QSvgIconPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("svg", "svgz", "svg.gz")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/iconengines" ...
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/accessible" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/accessible" ...
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/xcbglintegrations" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/xcbglintegrations/libqxcb-glx-integration.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/xcbglintegrations/libqxcb-glx-integration.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.Xcb.QXcbGlIntegrationFactoryInterface.5.5",
    "MetaData": {
        "Keys": [
            "xcb_glx"
        ]
    },
    "archreq": 0,
    "className": "QXcbGlxIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("xcb_glx")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/xcbglintegrations" ...
loaded library "/usr/lib/qt5.15.2/plugins/xcbglintegrations/libqxcb-glx-integration.so"
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/qt5.15.2/plugins/bearer" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/bearer/libqconnmanbearer.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/bearer/libqconnmanbearer.so, metadata=
{
    "IID": "org.qt-project.Qt.QBearerEngineFactoryInterface",
    "MetaData": {
        "Keys": [
            "connman"
        ]
    },
    "archreq": 0,
    "className": "QConnmanEnginePlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("connman")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/bearer/libqgenericbearer.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/bearer/libqgenericbearer.so, metadata=
{
    "IID": "org.qt-project.Qt.QBearerEngineFactoryInterface",
    "MetaData": {
        "Keys": [
            "generic"
        ]
    },
    "archreq": 0,
    "className": "QGenericEnginePlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("generic")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/qt5.15.2/plugins/bearer/libqnmbearer.so"
Found metadata in lib /usr/lib/qt5.15.2/plugins/bearer/libqnmbearer.so, metadata=
{
    "IID": "org.qt-project.Qt.QBearerEngineFactoryInterface",
    "MetaData": {
        "Keys": [
            "networkmanager"
        ]
    },
    "archreq": 0,
    "className": "QNetworkManagerEnginePlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("networkmanager")
QFactoryLoader::QFactoryLoader() checking directory path "/home/pi/eva/eva-core/bin/unix/debug/bearer" ...
loaded library "/usr/lib/qt5.15.2/plugins/bearer/libqconnmanbearer.so"
loaded library "/usr/lib/qt5.15.2/plugins/bearer/libqgenericbearer.so"
loaded library "/usr/lib/qt5.15.2/plugins/bearer/libqnmbearer.so"

提前致谢

【问题讨论】:

    标签: c++ qt raspberry-pi4


    【解决方案1】:

    看起来你只有 Wayland 可供 Qt 使用。 xcb 是 X Windows 系统的一部分,see here

    没问题!根据wiki page for QtWayland,您需要:

    无论您作为应用程序开发人员将您的 GUI 应用程序作为 Wayland 客户端运行,唯一需要做的就是告诉应用程序使用正确的平台插件:
    ./application -platform wayland 或:export QT_QPA_PLATFORM=wayland ./application

    该环境变量应该使您能够指示 Qt 使用 Wayland。该错误消息列出的可用插件也可以传递给QT_QPA_PLATFORM

    【讨论】:

    • xcb 标志猫有不自然的大爪子。 (您可以查看我的个人资料图片进行比较...)
    • 感谢您的回答。我使用QT_DEBUG_PLUGINS=1; 在qtcreator 之外启动它。我用wayland尝试了你的方法,但它似乎在启动时找不到插件,而它将它列为可用。感谢您的明确回答!
    • @ElevenJune 你比较过/home/pi/eva/eva-core/bin/unix/debug/platforms//usr/lib/qt5.15.2/plugins/platforms/ 吗?可能是QT_DEBUG_PLUGINS=1; 强制 Qt 在其安装前缀中查找插件,即使项目配置为不这样做。
    猜你喜欢
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2019-10-09
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多