Qt程序启动出现问题得调试办法

解决问题的关键

设置环境变量 export QT_DEBUG_PLUGINS=1
加了这个环境变量,让我看到了QT程序加载的过程,看到了详细的报错信息。

关于qt缺少xcb问题终极解决办法
问题背景
系统环境
qt版本
问题描述
解决过程
走的弯路
解决问题的关键
总结
问题背景
系统环境
中标麒麟,龙芯平台

qt版本
qt5.6

问题描述
原来的Qt程序是qt5.3.2版本,但是由于各种原因,升级成了qt5.6版本。
编译完成后放在其他机器上报错缺少xcb,报错如下:

This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.

Reinstalling the application may fix this problem.
1
2
3
4
5
6
解决过程
走的弯路
几乎尝试百度到的各种方式,无非就这么几种。
1、运行目录下添加platform文件夹,文件夹里放上libqxcb.so。
2、指定环境变量,具体什么变量记不清楚了。
3、在运行目录下,添加
libQt5Core.so
libQt5Gui.so
libQt5Network.so
libQt5Widgets.so
libQt5DBus.so
libicuuc.so
libicudata.so
libicui18n.so

最终结果还是不行。

解决问题的关键
设置环境变量 export QT_DEBUG_PLUGINS=1
加了这个环境变量,让我看到了QT程序加载的过程,看到了详细的报错信息。
最后一部分是这样的:


Found metadata in lib /usr/lib64/qt5/plugins/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 329218
}


Found metadata in lib /opt/dky/SASClient/bin/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 329216
}


QLibraryPrivate::loadPlugin failed on "/usr/lib64/qt5/plugins/platforms/libqxcb.so" : "Cannot load library /usr/lib64/qt5/plugins/platforms/libqxcb.so: (/lib64/libQt5XcbQpa.so.5: symbol _ZNK11QFontEngine6handleEv, version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference)"
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb, xcb.

Reinstalling the application may fix this problem.
1
看到问题没?
/lib64/libQt5XcbQpa.so.5
这个库有问题。
于是我把libQt5XcbQpa.so,也放在运行目录下。
奇迹发生了,一切OK了!!!

总结
网上大部分搜到的解决办法,可能都是基于qt5.6之前的,但是qt5.6之后新加了几个库,所以网上的解决办法搜不到,所以才困扰了我这么久。
这次解决问题的关键在于,添加环境变量:export QT_DEBUG_PLUGINS=1
相信遇到此问题,利用这个方法,都可以很快的定位并解决问题了。
最后,祝大家好运!!!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值