QMSQL:无法将不兼容的 Qt 库(版本 0x50b03)与该库(版本 0x50c05)混合使用

QMSQL : Cannot mix incompatible Qt library (version 0x50b03) with this library (version 0x50c05)

我正在尝试在 QT 应用程序中使用 MySQL 数据库。为此,我需要手动构建 MySQL,但完全没有按计划进行。

使用: Qt 5.12.5 g++ 8.3.0 制作 4.2.1 MySQL 15.1 Debian 10.1

我首先尝试遵循此指南:https://doc.qt.io/qt-5/sql-driver.html 但 qmake 无法检测到 MySQL headers.

在网上搜索后,我发现有人通过直接构建 driver 来设法解决问题。

我进去了 ~/Qt/5.12.5/Src/qtbase/src/plugins/sqldrivers/mysql 和 运行 :

qmake qmake "INCLUDEPATH+=/usr/include" "LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient_r"

没用:

Project ERROR: Library 'mysql' is not defined.

谷歌搜索后,我将 mysql.pro 文件更改为这个文件:

TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

目前有效。下一步,运行制作!你猜怎么了?也没用。

/usr/include/c++/8/cstdlib:75:15: fatal error: stdlib.h: No such file or directory

运行 qmake 再次没有 "INCLUDEPATH [...]",现在我缺少 mysql.h。我手动将它的路径添加到 Makefile 中。成功了。

我再次尝试 运行 我的 QT 应用程序,仍然没有 MySQL driver。

原来新建的driver没有和其他的一起复制到正确的目录中。所以我复制了 Qt/5.12.5/gcc_64/plugins/sqldrivers.

现在看来我的插件确实被 Qt 识别了,但它只是因为这个错误而崩溃:

Cannot mix incompatible Qt library (version 0x50b03) with this library (version 0x50c05)

我不知道下一步该怎么做,在互联网上找不到任何对这种情况有用的东西...

请帮忙?

原来我的系统上安装了另一个版本的 Qt。我不知道它是从哪里来的,但这个问题现在已经解决了。