2011-11-23 87 views
1

我在這裏有以下奇怪的情況我需要一些幫助:Qt Sql驅動程序問題

我正在構建一個Qt應用程序與MySQL訪問。爲此我有: - 一個專用的構建機器,使用Qt 2010.05和MySQL 5.1僅用於庫,Windows 7 32位。該機器創建安裝包。 - 一個專用的開發機器,CentOS 5.5 - 兩臺測試機器: - - 一個「永遠」全新安裝的Windows 7 - - 另一臺Windows 7機器上也有一個新的Qt,用於其他東西。

我已經在今年2月的某個時候(在bilding機器上)構建了以前版本的應用程序,它工作得很好,完美,加載了MySQL驅動程序(我已將它放在sqldrivers目錄中,如其他人所示) 。安裝包安裝,無處不在(至少在我所有的Windows機器上)。

現在,我已經在同一臺機器上構建了另一個應用程序版本。在安裝包中唯一重要的區別是可執行文件(和一些HTML文件,但這些文件不相關)。其他一切都是一樣的。當我在構建機器上運行NEW可執行文件時,我得到(QSQLITE,QMYSQL3,QMYSQL,QODBC3,QODBC)作爲QSqlDatabase :: drivers()輸出。如果我在任何其他機器上運行NEW exectuable,我會得到一個空的驅動程序列表。如果我運行它適用於任何機器上的老包...

由兩個processess已加載模塊(舊可執行文件,新的可執行文件)基本相同,不同之處是其獲取舊的加載和qtmysql DLL不在新的。

你有沒有遇到過這樣的情況?如果是,你是否有一個可行的解決方案?

謝謝, f。

回答

2

Qt只會加載與所使用的程序或Qt版本兼容的插件。請參閱Deploying Plugins文檔。

您也可以嘗試使用QPluginLoader手動加載插件,並檢查在QPluginLoader::errorString未加載時報告的內容(如果無法修復,請將錯誤消息添加到您的問題中)。

+0

我試過了:無法加載,錯誤字符串爲「未知錯誤」:( – fritzone

+1

如果未設置其他錯誤消息,則返回「未知錯誤」,是否調用了'QPluginLoader :: load'並得到了'false ?' –

+0

沒有,我已經得到了真正的,這裏是代碼:;(!Loader.load方法())\t QPluginLoader裝載機(的QApplication :: applicationDirPath()+ 「/sqldrivers/qsqlmysql4.dll」) \t如果 { QMessageBox提示::至關重要(此時間tr( 「錯誤」),loader.errorString(),QMessageBox提示:: OK);} \t其他 \t { QMessageBox提示::至關重要(此時間tr( 「沒有錯誤」) ,loader.errorString(),QMessageBox :: O K); \t}然後我得到「沒有錯誤」,但是當我嘗試做真正的工作時,我仍然得到「驅動程序未加載」...... – fritzone