鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    wsl2所有有图形界面的程序都打不开,显示This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

    已定时 已固定 已锁定 已移动 未解决
    ROS2机器人开发:从入门到实践
    报错问题 求助
    2
    2
    262
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 3
      3304257104
      最后由 编辑

      QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms" ...
      QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so"
      Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/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/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so"
      Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/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/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so"
      Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/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/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so"
      Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/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/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so"
      Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/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/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so"
      Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/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/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
      Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/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 "/opt/ros/humble/lib/turtlesim/platforms" ...
      loaded library "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
      qt.qpa.xcb: could not connect to display
      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.

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        您遇到的问题是在尝试在 WSL2(Windows Subsystem for Linux 2)中运行具有图形界面的 Qt 应用程序时,无法初始化 Qt 平台插件。这通常是因为 WSL2 不直接支持图形用户界面(GUI)。尽管 WSL2 改进了对 Linux 内核功能的支持,但它仍然运行在 Windows 的内部,并且没有直接访问 Windows 的图形显示服务器。

        错误信息表明 Qt 试图使用 xcb 平台插件(这是用于 X Window System 的插件),但无法连接到显示服务器。在 WSL2 中,没有默认的 X 服务器运行,因此无法显示 GUI。

        解决方案

        1. 使用 X Server for Windows:

          • 您可以在 Windows 上安装一个 X Server,如 VcXsrv、Xming 或 X410。这些工具允许 Windows 主机作为 X 服务器运行,从而可以显示 Linux GUI 应用程序。
          • 安装后,启动 X 服务器,并确保它配置为接受来自 WSL2 的连接。
          • 在 WSL2 中,设置 DISPLAY 环境变量以指向 Windows 上的 X 服务器。通常,这可以通过运行 export DISPLAY=$(hostname -I | awk '{print $1}'):0.0 来完成(假设 X 服务器运行在默认端口上)。
        2. 使用 Windows Subsystem for Linux GUI (WSLg):

          • 从 Windows 11 版本 21H2 开始,微软引入了 WSLg,它内置了对 GUI 应用程序的支持。如果您的 Windows 版本支持 WSLg,您可以尝试安装或更新到支持 WSLg 的 WSL 版本。
          • 确保您的 WSL 发行版是基于 WSLg 的。在 Windows 功能中启用 WSLg 后,您可能需要重新安装或更新您的 Linux 发行版。
        3. 远程 X11 会话:

          • 如果可能,考虑将 GUI 应用程序运行在远程 Linux 服务器上,并通过 SSH 和 X11 转发来显示 GUI。这通常用于开发环境,其中有一个专用的服务器用于运行 GUI 密集型应用程序。

        实施步骤示例(使用 VcXsrv)

        1. 下载并安装 VcXsrv。
        2. 启动 VcXsrv,在“Extra settings”中选择“Disable access control”。
        3. 在 WSL2 中,设置 DISPLAY 变量并运行您的 Qt 应用程序:
          export DISPLAY=$(hostname -I | awk '{print $1}'):0.0
          ./your-qt-application
          

        确保您的防火墙设置允许这种类型的连接,并且您的网络配置不会阻止 WSL2 与 Windows 主机上的 X 服务器通信。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 第一个帖子
          最后一个帖子
        皖ICP备16016415号-7
        Powered by NodeBB | 鱼香ROS