我创建了一个简单的C 库。运行LDD给出
ldd libTESTPlugin.so.1.0.0 | grep -i qt
libQt5Widgets.so.5 => /lib64/libQt5Widgets.so.5 (0x00007f5345f14000)
libQt5Gui.so.5 => /lib64/libQt5Gui.so.5 (0x00007f5345a71000)
libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007f53455e7000)
libQtXml.so.4 => /lib64/libQtXml.so.4 (0x00007f5344074000)
libQtCore.so.4 => /lib64/libQtCore.so.4 (0x00007f5343b71000)
libQtGui.so.4 => /lib64/libQtGui.so.4 (0x00007f5342e4b000)
libQtNetwork.so.4 => /lib64/libQtNetwork.so.4 (0x00007f5342afa000)
libQtSvg.so.4 => /lib64/libQtSvg.so.4 (0x00007f53428a0000)
libQtWebKit.so.4 => /lib64/libQtWebKit.so.4 (0x00007f53403b3000)
libQtSql.so.4 => /lib64/libQtSql.so.4 (0x00007f5340170000)
libQtLocation.so.1 => /lib64/libQtLocation.so.1 (0x00007f5336a09000)
libQtSensors.so.1 => /lib64/libQtSensors.so.1 (0x00007f53367d5000)
libQtOpenGL.so.4 => /lib64/libQtOpenGL.so.4 (0x00007f5334ccb000)
libQtDeclarative.so.4 => /lib64/libQtDeclarative.so.4 (0x00007f5329d06000)
libQtScript.so.4 => /lib64/libQtScript.so.4 (0x00007f5329845000)
libQtXmlPatterns.so.4 => /lib64/libQtXmlPatterns.so.4 (0x00007f53291c0000)
因此,我的lib与QT4和QT5均链接。它为我与仅与QT5相关的其他软件提供了一些集成问题。
是否有一种方法可以指定仅与QT5链接,而不是QT4?
尝试使用QT_SELECT
环境变量将QT5设置为默认QT版本:
export QT_SELECT = <Qt version>
例如:
export QT_SELECT = qt5
另外,如果您使用的是 QT Creator ,请再次检查您的构建配置。
ps:我不确定它们是否仍然包括Qtchooser,但是您可以尝试运行此命令以列出系统上的所有已安装版本:
qtchooser -list-versions
也许您还使用QT链接另一个lib,例如qwt。如果您选择了此类lib的错误版本,它可能会加载Dynamic Qt Libs的错误版本。
请参阅https://stackoverflow.com/a/51282459/1328780有关QWT的解决方案。