編譯QT的MySql驅動問題及解決方案

來源:互聯網
上載者:User

標籤:

      做畢業設計要用到MySql,介面方面想用下QT,順便學習一下QT的使用。上去就碰到問題,沒有MySql的驅動(其實在.\Qt\4.6.0\plugins\sqldrivers目錄下有,後來編譯完了才發現,這裡要崩潰一下~)。GOOGLE了一下,翻了翻網頁,就開始編譯驅動了。

      這裡使用QT4.6.0版本和VS2008內建的編譯器

      使用的命令列參數是:

qmake –o Makefile INCLUDEPATH+="D:\Program Files\MySQL\MySQL Server 5.1\include" LIBS+="D:\Program Files\MySQL\MySQL Server 5.1\lib\opt\libmysql.lib" mysql.pro
nmake

      跟預料中的一樣,編譯出錯,錯誤是"cannot find file: mysql.pro",費了半天勁終於發現我進入的目錄是".\Qt\4.6.0\src\sql\drivers\mysql"而不是傳說中的".\Qt\4.6.0\src\plugins\sqldrivers\mysql"(本目錄才是正確路徑!)。發生本錯誤的同志們一定要檢查一下命令列的路徑進的是否正確!

      一個問題解決了,qmake成功完成,開始nmake。這裡先是碰到了qsqlmysqld_resource.rc中找不到"WinVer.h"的錯誤。找了找,發現WinVer.h標頭檔居然在Windows SDK的檔案夾下,於是在".\Microsoft Visual Studio 9.0\Common7\Tools"中找到了vsvars32.bat設定環境變數的批處理,把該批處理拖入命令列視窗運行一遍(注意該批處理僅設定本次命令列視窗中的環境變數,並未修改註冊表,所以每次開啟個新命令列視窗都要運行一次批處理才可獲得其中包含的環境變數設定!),再nmake,找不到WinVer.h的問題解決了。

      再次nmake,這次問題就詭異了,居然找不到"mysql.h"!但mysql.h已經在qmake的INCLUDEPATH參數中包含進去了,怎麼可能找不到?鬱悶,開啟Makefile.Debug看看,發現裡面INCLUDE進去的"D:\Program Files\MySQL\MySQL Server 5.1\include"每個空格處都被認為是一個路徑,好好的路徑給分的希碎,qmake的智商太低了!沒法,把MySQL Server 5.1檔案夾下的include和lib檔案夾直接拷貝到根目錄下,這樣INCLUDEPATH和LIBS路徑均無空格,再次qmake、nmake,OK了!

      總結:QT編譯MySql驅動注意要點:

  1. 先檢查".\Qt\4.6.0\plugins\sqldrivers"中有無sql驅動,有的話就別費這勁編譯了!
  2. 安裝MySql時要勾住“C Include Files 和 Lib Files”選項,這樣才能裝上MySql的標頭檔和連結庫。
  3. 安裝MySql時路徑中不要有空格,不然編譯驅動太費勁(上面的找不到"mysql.h"錯誤)。
  4. 命令列進行qmake和nmake前,一定要先轉入正確目錄(上面的"cannot find file: mysql.pro"錯誤)!
  5. 在nmake前最好運行一遍vsvars32.bat批處理(上面的找不到"WinVer.h"錯誤)。

編譯QT的MySql驅動問題及解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.