1. 程式人生 > >使用MySQL外掛的QT專案在通過windeployqt工具部署後無法訪問資料庫的解決辦法

使用MySQL外掛的QT專案在通過windeployqt工具部署後無法訪問資料庫的解決辦法

一個專案,使用了QT自帶的qsqlmysql.dll(qsqlmysqld.dll)作為連線MySQL資料庫的介面,在QTCreator環境下可以自動載入libmysql.dll,可以順利訪問資料庫,但是通過windeployqt工具部署後,無法訪問資料庫。

 

推測是因為QT的windeployqt工具在部署exe時,自動將exe依賴的plugins寫入到Qt5Core.dll(Qt5Cored.dll)中。在加入-sql引數後,windeployqt工具做了兩件事:

  1. 把plugins資料夾下的sqldrivers資料夾拷貝到部署目錄
  2. 把sqldrivers中qsqlmysql.dll等dll檔案的路徑寫入到Qt5Core.dll中

如果將exe部署到G:/deploy/目錄時,Qt5Core.dll中寫入的路徑是:G:/deploy/plugins/sqldrivers/qsqlmysql.dll,然而實際的qsqlmysql.dll卻被拷貝到了G:/deploy/sqldrivers/qsqlmysql.dll,所以沒辦法訪問到資料庫。

 

解決辦法,在部署時增加 --plugindir ./plugins,把依賴外掛拷貝到plugins子資料夾,與Qt5Core.dll中一致。或者直接新建一層plugins目錄,把sqldrivers放在plugins下。