2017-07-30 45 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。

相關問題