本文目錄一覽:
如何解決Qt Mysql中無法加載驅動問題
本文講解是如何解決Qt Mysql中無法加載驅動問題,MySQL是一個小型關係型數據庫管理系統。對於已經融入到Qt中的MySQL,也是很推廣!那麼先看本文的介紹。
做畢業,這兩天一個很大的問題困惑的我不行。畢設我是用qt + mysql來做的。結果在自己電腦上跑起來很正常,但是編譯一個release版本,拿到另外一台電腦上就報錯說:can’t load driver 。試圖去解決這個問題,今天總算搞定,這裡總結一下。
首先需要說明的是:我用的是qt for vc2005,qt4.5.0 mysql server5.5
整個流程:
1:首先我編譯了一個release版本,而後用dependency walker查看了下庫的依賴情況。發現依賴於:QtSql4.dll,QtGui4.dll,QtCore4.dll,msvcr80.dll以及KERNEL32.DLL這幾個庫。其中最後一個是system的,我們不用去管,剩下的這幾個顯然都需要拷貝到exe同目錄下。尤其是msvcr80.dll,我在我電腦上搜了一下:有多大10幾個同名的該文件,所以拷貝哪個是很重要的,此時我們只需要在dependency walker查看這個dll的屬性,然後去對應目錄底下拷貝就行了。所以:第一步就是把這些依賴庫拷貝到exe同目錄下。(千萬不要拷貝錯誤,尤其是不同的版本)。
2、做完1之後再次運行,提示:找不到驅動。 問了一下別人,告之需如下做:
(1)首先在exe同目錄下建一個plugins\sqldrivers這樣的二級目錄,而後將前邊編譯生成的qt-mysql驅動:qsqlmysql4.dll放到裡邊。
(2)而後在main.cpp中加上如下兩句:
QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ “plugins”); qApp.addLibraryPath(strLibPath);
做完這兩部之後:按理應該沒問題了,但是run一下發現:還是提示驅動找不到。
3、再後來,上網查了一下各種說法,發現幾種可能性:①你要發佈的電腦上沒有安裝mysql ②mysql版本不對。 我就納悶了:找不到驅動與裝沒裝mysql有什麼關係?畢竟:驅動是我自己編譯的,又不是mysql提供的。 問了下別人,別人也這麼認為。然後就卡在這裡了。 我不死心,繼續在網上尋找各種可能的答案並進行嘗試。最後找了問題,原來:我們需要把mysql提供的:libmySQL.dll這個庫拷貝到exe同目錄下(該文件在我自己電腦上處於:C:\Program Files\MySQL\MySQL Server 5.5\bin文件夾下)。如此之後再來運行就不再報:找不到驅動這個錯誤啦!(此時報的是:連接不到某個指定的數據庫,那是因為我還沒有把數據庫文件導入到目標機器上來)。
總結:在其他pc上發佈的時候需要做如下工作:
1、使用depenency walker查看依賴庫,全部拷貝到exe同文件夾下。
2、(1)在exe同目錄下建一個plugins\sqldrivers這樣的二級目錄,而後將前邊編譯生成的qt-mysql驅動:qsqlmysql4.dll放到裡邊。
(2)而後在main.cpp中加上如下兩句:
QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ “plugins”); qApp.addLibraryPath(strLibPath);
3、將mysql/bin目錄下的libmySQL.dll拷貝到exe同目錄下。
做完以上幾步之後就OK了。
至於最後所報的連接不到指定的數據庫,原因是這樣的:
在開發的電腦上:你建了一個mysql數據庫,那麼我們需要把這個數據庫文件也拷貝到目標機器上,並在目標機器上裝mysql,而後將這個數據庫文件導入進去。 導入之後你會發現:各字段的數據有可能出現亂碼,這是由於各個字段的編碼格式在開發機器和目標機器上不一致 導致的! 你需要按照開發機器上的數據庫文件配置來重新設置一下目標機器的各個字段編碼格式。
而在目標機器上導入數據庫文件的方法是:(以建立的數據路名為buaa.sql為例)
1、在目標機器上裝mysql
2、命令行運行mysql,進入後執行命令:create database buaa;
3、導入buaa.sql到剛創建的buaa數據庫中。(我用的mysql-front這個數據庫圖形化工具)。
測試: Qt4.5.0commercial + vc2005 express + mysql5.5 +mysql-front +windows xp
(網上很多人說:找不到驅動是因為目標機器上沒有安裝vc運行時庫的原因,但是我這裡沒有遇到這個問題:我測試的電腦沒有任何vc環境,沒有任何qt環境,也沒有安裝windows sdk。 但是如果大家按照我上邊的方法測試發現有問題時:可以考慮在目標機器上安裝vc運行時庫試一下。它分sp1版本和 非sp1版本,你對應主機的vc版本選擇一個安裝就是。)
小結:關於如何解決Qt Mysql中無法加載驅動問題,介紹完了,好像出現此問題的友們還是有很多滴,希望本文對你有所幫助。
qt連接mysql數據庫怎麼編譯驅動
下載mysql C鏈接庫
選擇C的鏈接庫
2
將C的連接庫解壓到到C:/mysql 目錄下
3
我的QT 安裝在C盤目錄下,版本號是4.8.6 所以打開目錄
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
4
將C:/mysql/lib/libmysql.dll 和C:/mysql/lib/libmysql.lib
複製到此處。
5
編輯目錄下的mysql.pro文件
添加
INCLUDEPATH+=”C:/mysql/include”
LIBS+=”C:/mysql/lib/opt/libmysql.lib”
運行qt的控制台窗口,方便使用qmake
切換到目錄下
C:\QT\4.8.6\src\plugins\sqldrivers\mysql
執行qmake
運行VS2010的控制台工具
切換到
C:\QT\4.8.6\src\plugins\sqldrivers\mysql 目錄下
執行nmake 和nmake release
是nmake不是make
這樣在C:\QT\4.8.6\src\plugins\sqldrivers\mysql 目錄下的debug 目錄和release 目錄下分別會產生
qsqlmysqld4.dll qsqlmysqld4.lib
qsqlmysql4.dll qsqlmysql4.lib
將上面提到的四個文件複製到
C:\QT\4.8.6\plugins\sqldrivers
最後把
C:\mysql\lib\opt\libmysql.dll
C:\mysql\lib\opt\libmysql.lib
複製到
C:\Windows\system32\ 目錄下。
最後測試mysql 可不可以在qt中正常使用
新建一個qt 控制台項目
輸入以下代碼
#include QCoreApplication
#include QDebug
#include qstring.h
#include qstringlist.h
#include qsql.h
#include qsqldatabase.hint main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() “Available drivers:”;
QStringList drivers = QSqlDatabase::drivers();qDebug() drivers;return a.exec();
}
運行測試一下,看看有沒有圖片中紅圈圈中的兩項內容
求教大神 qt5編譯mysql驅動問題
注意編譯器一定要和MYSQL的平台版本一致,32位的用32位的編譯器編譯,64位的用64位的編譯器編譯。
準備工作:MYSQL的目錄:D:\SQL_Server\mariadb
Qt5.1.1的目錄:C:\Qt
1. 先將D:\SQL_Server\mariadb中的include\和lib\文件夾複製到根目錄(C:),因為後面make時路徑不能有空格。
2. 打開QT5.1.1 for Desktop(MinGW 4.8)
cd C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\src\plugins\sqldrivers\mysql
qmake “INCLUDEPATH+=D:\SQL_Server\mariadb\include” “LIBS+=D:\SQL_Server\mariadb\lib\libmysql.lib” mysql.pro
mingw32-make
如果出現找不到mysql.h文件就用qtcreator打開mysql.pro文件,配置項目,然後編譯,就會出現錯誤提示,把#include mysql.h改成#include mysql/mysql.h,編譯就行了,或回到命令行再次執行mingw32-make即可.
3. 編譯成功後。
進入到C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\plugins\sqldrivers目錄下,選中qsqlmysql.dll和 qsqlmysqld.dll兩個文件,
複製到C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\sqldrivers目錄下。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/300869.html