Qt編程中遇到的問題及解決辦法

1. 無法解析的外部符號

LNK2019:無法解析的外部符號 “public” LNK1120:1個無法解析的外部命令

經常遇到類似的錯誤,將該項目的編譯文件刪除後再次編譯運行即可。

2. 獲取屏幕尺寸的函數:

QApplication::desktop()->size();

3. 鏈接SQL Server數據庫失敗

ODBC 數據源管理器 未發現數據源或……

若是出現上述警告,打開 控制面板->系統和安全->管理工具->ODBC數據源,添加一個DNS,驅動程序選擇SQL Server名稱隨意(在連接數據庫時要使用,setDatabaseName()的參數),原則自己的服務器 ,注意勾選 更改默認的數據庫 選擇爲自己在SQL Server中建的數據庫。完成後即可成功連接。
詳細請參見:http://www.educity.cn/wenda/284013.html

4.找不到MySQL驅動

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

出現這個問題時我在用Qt5.5.1,雖然已自帶了MYSQL驅動,但因與我的MySQL版本不符,所以仍顯示QMYSQL driver not loaded。解決辦法是重新編譯MySQL驅動:

  1. 先確保你有Qt的源代碼和完整的MySQL
  2. 打開Qt的命令行終端:Qt 5.5 for Desktop,輸入:

    (1).

    C:\app\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\mysql

    注意:應將C:\app\Qt5.5.1改爲你的Qt安裝目錄
    這裏寫圖片描述

    (2).

    qmake “INCLUDEPATH+=D:\mysql-5.6.24-win32\include” “LIBS+=D:\mysql-5.6.24-win32\lib\libmysql.lib” -o Makefile mysql.pro

    注意:應將D:\mysql-5.6.24-win32改爲你的MySQL安裝目錄
    這裏寫圖片描述

    (3).

    mingw32-make

    這裏寫圖片描述
    如果輸入無誤會進行一系列編譯。靜候其完成即可。

  3. 將C:\app\Qt5.5.1\5.5\Src\qtbase\plugins\sqldrivers文件夾下編譯生成的qsqlmysql.dll 和 qsqlmysqld.dll 文件複製到C:\app\Qt5.5.1\5.5\mingw492_32\plugins\sqldrivers

    另外,生成兩個.dll的文件夾裏還有兩個.a文件。貌似是Qt開發安卓連接MySQL時要用到的動態庫,可以保存着備用。

  4. 將 D:\mysql-5.6.24-win32\lib文件夾中的libmysql.dll文件複製到C:\app\Qt5.5.1\5.5\mingw492_32\bin
  5. 如果操作無誤就完成了,可以試一下如果不出現driver not loaded就是對啦。
#include "mainwindow.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QSqlDatabase mysql = QSqlDatabase::addDatabase("QMYSQL");
    mysql.setHostName("localhost");
    mysql.setDatabaseName("test");
    mysql.setUserName("name");
    mysql.setPassword("pwd");
    qDebug() << "是否打開MySQL數據庫:" << mysql.open();

    QSqlDatabase sqlite = QSqlDatabase::addDatabase("QSQLITE");
    sqlite.setDatabaseName("test");
    qDebug() << "是否打開SQLite數據庫:" << sqlite.open();

    MainWindow w;
    w.show();

    return a.exec();
}

5.Linux靜態編譯Qt5.8.0配置

./configure -prefix /home/zzf/Qt5.8.0/5.8/5.8_Static -release -c++std c++11 -static -qt-sqlite -no-qml-debug -platform linux-g++-64 -qt-zlib -no-journald -qt-libpng -qt-libjpeg -skip qtsensors -skip qtdoc -nomake tools -nomake examples -nomake tests

參考:http://www.mamicode.com/info-detail-1433017.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章