2017-07-30 217 views
0

我将我的项目从Windows Server 2003(32位)上的qt4.8.4移植到win7(64位)上的qt5.3.1,我静态构建qt源并动态构建qsqlmysql,但我的代码无法加载mysql qt驱动程序。该错误是像如下,Qt不加载任何数据库驱动程序

QSqlDatabase: QMYSQL driver not loaded 
QSqlDatabase: available drivers:() 

我的代码如下,

db = QSqlDatabase::addDatabase("QMYSQL", "*****"); 
db.setHostName("*****"); 
db.setDatabaseName("*****"); 
db.setUserName("*****"); 
db.setPassword("*****"); 

当我在注册表中搜索“QMYSQL”,我什么也没有,似乎qmysql驾驶未注册。

任何想法?

回答

0

默认配置只会给你sqlite的支持,也许ODBC会在Windows上自动检测。您将需要指定sql支持并可能提供库和包含路径。例如(使用的MySQL mardiadbclient):

预Qt的5.8:

-qt-SQL的MySQL -LE:\ msys64 \ mingw64 \ lib中的mysqlclient -l -IE:\ msys64 \ mingw64 \包括\ MariaDB的

发布的Qt 5.8:

-sql MySQL的MYSQL_INCDIR = E:\ msys64 \ mingw64 \包括\ MariaDB的MYSQL_LIBDIR = E:\ msys64 \ mingw64 \ lib中MYSQL_LIBS =“ - 升的mysqlclient “-L E:\ msys64 \ mingw64 \ li b

+0

我使用下面的optioin构建qt源代码:首先,-qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc然后我分别生成qt-mysql驱动程序。 – user497032

+0

哪个qt版本? – dtech

0
在qt4.8.4

,当你静态链接qsqlmysql,你应该写: Q_IMPORT_PLUGIN(qsqlmysql) 但在qt5.3.1,名字改了,你应该写宏如下: Q_IMPORT_PLUGIN(QMYSQLDriverPlugin )

这就是为什么我总是得到一个无法解析的外部错误。更改名称后,我可以成功链接mysql。

相关问题