用tdm編譯64bit qt版本的mysql驅動,tdmqt

來源:互聯網
上載者:User

用tdm編譯64bit qt版本的mysql驅動,tdmqt

官網只提供了32位的mingw編譯的qt版本,經測試可以直接已經有mysql驅動,並可執行事務.
但是我是用了自己編譯的tdm-gcc 64位版本的qt,就沒這個福利了.

主要是根據下文提及步驟進行操作
http://1029975378-qq-com.iteye.com/blog/1310910
http://blog.sina.com.cn/s/blog_74a7e56e01017s64.html

===============第一步===============
第一步主要是產生def檔案和準備mysql編譯所需的標頭檔
去mysql官網下載zip安裝包(64bit版本的,5.6.26是349.4M):
http://dev.mysql.com/downloads/mysql/
解壓縮,從以下路徑複製lib檔案到E:\Coding\QT\SourceCode\mysql_svr\x64\lib\檔案夾
mysql-5.6.26-winx64\lib\libmysql.lib
同時從解壓縮檔案中複製include檔案到E:\Coding\QT\SourceCode\mysql_svr\x64\include\檔案夾
接下來需要用reimp提取的libmysql.lib產生libmysql.def檔案,reimp只有32bit的,但是也可以用來處理64bit的lib檔案,
進入E:\Coding\QT\SourceCode\mysql_svr\x64\lib\檔案夾,執行如下命令:
C:\Qt\Qt5.5.0\Tools\mingw492_32\bin\reimp -d  libmysql.lib

*************************************************************************************
**  插一句
**  下面的mysql的源碼中也可以找到找到libmysql.def檔案,源碼下載路徑(5.6.26是39.6M):
**  http://dev.mysql.com/downloads/mysql/
**  下載的是個zip檔案,解壓縮,路徑如下
**  mysql-5.6.26\libmysql\libmysql.def
**  經過我實際操作,用源碼中的def檔案產生的驅動不支援事務操作.
**  另外,由於最新的mysql都是用cmake配置工程,
**  所以用下文中提到方法可能可以直接利用qt編譯mysql源碼,但我未做嘗試
**  http://www.2cto.com/kf/201401/272101.html
*************************************************************************************


===============第二步===============
由第一步取得的libmysql.def產生libmysql.a檔案
C:\TDM-GCC-64\bin\dlltool -k -d libmysql.def -l libmysql.a

然後進入以下qt原始碼目錄(以下操作的前提是,之前已經用configure命令配置tdm-gcc-64來編譯整個qt代碼,因為會涉及到許多其他設定檔)
E:\Coding\QT\SourceCode\qt-everywhere-opensource-src-5.5.0\qtbase\src\plugins\sqldrivers\mysql
修改其中的mysql.pro檔案,在開頭插入lib和include資訊,修改後檔案大概如下

***************************
TARGET = qsqlmysql

LIBS        *= "E:\Coding\QT\SourceCode\mysql_svr\x64\lib\libmysql.a"
INCLUDEPATH *= "E:\Coding\QT\SourceCode\mysql_svr\x64\include"

SOURCES = main.cpp
OTHER_FILES += mysql.json
include(../../../sql/drivers/mysql/qsql_mysql.pri)

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
***************************
用qmake由pro檔案產生makefile,命令如下:
C:\Qt\Qt5.5.0\5.5\tdm510_shared\bin\qmake -o Makefile mysql.pro
產生qt的mysql驅動檔案,命令如下:
C:\TDM-GCC-64\bin\mingw32-make
產生的檔案(qsqlmysql.dll, qsqlmysqld.dll)在以下目錄
E:\Coding\QT\SourceCode\qt-everywhere-opensource-src-5.5.0\qtbase\plugins\sqldrivers


===============第三步===============
複製產生的2個檔案(qsqlmysql.dll, qsqlmysqld.dll)到對應的qt的以下路徑
C:\Qt\Qt5.5.0\5.5\tdm510_shared\plugins\sqldrivers


===============第四步===============
最後編譯運行自己程式仍然可能出現下面的錯誤
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QODBC3 QODBC QSQLITE QMYSQL QMYSQL3
需要用到第一步下載的mysql zip解壓縮包的以下檔案
mysql-5.6.26-winx64\lib\libmysql.dll
複製libmysql.dll到qt的bin檔案夾下,我機器是下面路徑
C:\Qt\Qt5.5.0\5.5\tdm510_shared\bin


OK,至此可以使用qt來串連mysql資料庫了

===================================

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.