我将我的项目从windows server 2003(32bit)上的qt4.8.4移植到win7(64bit)上的qt5.3.1,我静态构建qt源,并动态构建qsqlmysql,但是我的代码无法加载mysql qt驱动。错误如下,
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers:()
我的代码如下,
db = QSqlDatabase::addDatabase("QMYSQL", "*****");
db.setHostName("*****");
db.setDatabaseName("*****");
db.setUserName("*****");
db.setPassword("*****");
当我在注册表中搜索“QMYSQL”时,我什么都没得到,似乎qmysql驱动程序没有注册。
有什么想法吗?
答案 0 :(得分:0)
默认配置只会为您提供sqlite支持,也许在Windows上会自动检测ODBC。您需要指定sql支持,并且可能还提供libs和包含路径。例如(使用mardiadbclient for mysql):
Pre Qt 5.8:
-qt-sql-mysql -L E:\ msys64 \ mingw64 \ lib -l mysqlclient -I E:\ msys64 \ mingw64 \ include \ mariadb
发布Qt 5.8:
-sql-mysql MYSQL_INCDIR = E:\ msys64 \ mingw64 \ include \ mariadb MYSQL_LIBDIR = E:\ msys64 \ mingw64 \ lib MYSQL_LIBS =" -l mysqlclient" -L E:\ msys64 \ mingw64 \ lib中
答案 1 :(得分:0)
在qt4.8.4中,当你静态链接qsqlmysql时,你应该写: Q_IMPORT_PLUGIN(qsqlmysql) 但在qt5.3.1中,名称发生了变化,您应该按如下方式编写宏: Q_IMPORT_PLUGIN(QMYSQLDriverPlugin)
这就是为什么我总是得到一个未解决的外部......错误。更改名称后,我可以成功链接mysql。