1. 程式人生 > >windows下Qt5.6.0 編譯Mysql驅動,並使用

windows下Qt5.6.0 編譯Mysql驅動,並使用

windows下Qt5.6.0 編譯Mysql驅動,並使用。

 

寫這篇部落格的原因很簡單,百度一堆答案看的眼花繚亂,有用的沒幾個,也不想下次在安裝QT資料庫環境上浪費時間,也希望大家也不要在這裡浪費時間。第一次Windows下安裝Mysql實在是痛苦。

注意:圖省事的朋友可以直接在這裡下載我編譯好的驅動檔案,能不能使用我就不清楚了:

http://pan.baidu.com/s/1qYktUhA

 

本來Qt5.6.0已經自帶了Mysql的驅動。在此目錄中

C:\Qt\Qt5.6.0\5.6\mingw49_32\plugins\sqldrivers

 

如果你可以使用,恭喜你中獎了,那就大膽的用吧!然而中獎終究是少數,大部分人使用的時候都會報錯。如下:(這裡寫成文字方便人搜尋吧!)

 

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QPSQL QPSQL7

"Driver not loaded Driver not loaded"

意思很簡單就是你Qt自帶的驅動有問題是使用不了的,那麼接下來就須要編譯自己Mysql驅動,也就是庫檔案,上網查了很久弄了一天,其實很簡單,總結了下需要的東西。

 

1.QT 原始碼。本來我QT是安裝版本的5.6,根本就沒有原始碼(可是苦了寶寶我了),原始碼的名字一般是中間有everywhere。Windows下一般是一個ZIP的壓縮文件。解壓到任何地方都可以。我將其解壓在C:\Qt目錄下也就是Qt的安裝目錄。

比如 :qt-everywhere-opensource-src-5.6.0.zip

QT5.6Windows安裝板下載地址:http://pan.baidu.com/s/1c2t5MCw

QT5.6Windows版本的原始碼下載地址 :http://pan.baidu.com/s/1hs0PmQC

 

 

2.Mysql安裝版就可以如果沒有合適的安裝板下載原始碼也是可以的。下面是度娘出來的詳細下載與安裝方法: http://jingyan.baidu.com/article/597035521d5de28fc00740e6.html

安裝版本在安裝的時候,這裡切記的有個問題就是如圖一定要選擇Custom可以自定義目錄,最開始一路NEXT驅動也生成出現錯誤,這裡自定義了路徑就好了我也不知道為啥,但是百度都是這麼說的。

這個是我使用的路徑 C:\MySQL\MySQL Server 5.5\

之後一路next吧。

這裡我也給出一份Mysql5.5.30安裝板下載地址:http://pan.baidu.com/s/1jIqBLVS

準備工作做好了,下面就開始編譯了。

 

1.我們先找到QT安裝包裡面自帶Mingw工具集命令視窗。

開始選單中可以找到。

 

 

2.右鍵管理員的方式執行。使用CMD進入到QT原始檔的帶有mysql.pro檔案的目錄:

cd C:\Qt\qt-everywhere-opensource-src-5.6.0\qtbase\src\plugins\sqldrivers\mysql

此目錄下有三個檔案,不然之後會編譯不過。

 

 

3. 執行Qmake ,以mysql.pro工程檔案,生成Makefile,以及生成mysql庫的原始檔。

qmake "INCLUDEPATH+=C:\MySQL\MySQLServer5.5\include" "LIBS+=C:\MySQL\MySQLServer5.5\lib\libmysql.lib" -o Makefile mysql.pro 

生成產物:

 

 

4.執行  mingw32-make 

在C:\Qt\qt-everywhere-opensource-src-5.6.0\qtbase\plugins\sqldrivers這個目錄(與編譯目錄不同)下會生成我們Qt所需要的mysql資料庫檔案

 

5.將上面生成的這個全部產物複製到:

C:\Qt\Qt5.6.0\5.6\mingw49_32\plugins\sqldrivers

目錄中。

 

6.把C:\MySQL\MySQL Server 5.5\lib\libmysql.dll複製到C:\Windows目錄下。

注意的是Mysql 目錄有空格的請多注意下。

6部大功告成。下面就來測試下吧!

下面是測試程式碼:

 

 

編譯輸出:

 

重要提示:

如果在編譯時,出現這樣的錯誤:compilation terminated. Makefile.Release:466: recipe for target '.obj/release/main.o' failed mingw32-make[1]: *** [.obj/release/main.o] Error 1 mingw32-make[1]: Leaving directory 'D:/D/QT/qt-everywhere-opensource-src-5.6.0/qtbase/src/plugins/sqldrivers/mysql' makefile:38: recipe for target 'release-all' failed mingw32-make: *** [release-all] Error 2

原因可能有以下:

①Qt的mingw是32位的編譯器,你電腦裡面肯定是裝了64位的MySQL,所以才會出現這個錯誤,你將64位的MySQL解除安裝掉,裝一個32位的MySQL再試一下,就可以了。本質上,是32位的編譯器使用64位的庫,當然會出錯。最好是全部採用32位的!

②Qt5.8編譯驅動出錯,通過換Qt版本解決。