QT程序报错 Cannot mix incompatible Qt library......的解决方法

在目标机上调试Qt程序,编译没问题,当运行程序时,程序闪退,并给出错误提示:

Cannot mix incompatible Qt library (version 0x40805) wiht this library (version0x40807)
Aborted (core dumped)

原因分析:
字面含义为:不能将不兼容的Qt库(版本0x40805)和(版本0x40807)进行混合使用;这说明当前系统中存在两个版本的Qt库,分别为485和487,程序运行时加载了不同版本的Qt库,导致运行错误。至于为什么会加载不同版本的qt库,原因在于当前环境变量的Qt库缺少程序运行所需的Qt库文件,此时程序会去其它环境目录以及系统目录中寻找对应的Qt库,并且找到了,但是版本不同。

对可执行程序使用ldd命令,对其运行所需的库进行全面检查,查看Qt库是否存在不同版本;如果不存在可对自己的so库进行检查,如果还有插件也一并检查,就能查出问题所在了。

解决方法:
保证程序运行时加载同一版本的Qt库即可。

方法1: 将所缺少的Qt库(同一版本)拷贝至对应的环境变量文件夹中。

方法2:进入Qt的安装目录,并进入lib文件夹,将其下的库文件备份至新建文件qt中,这样程序运行时就会全部加载另一版本的Qt库。
 例:

#cd  /usr/local/Trolltech/Qt-4.8.7/lib
#mkdir qt
#mv *Qt* qt

猜你喜欢

转载自blog.csdn.net/yulong_abc/article/details/128680650