2011-01-25 73 views
3

我真的很堅持,現在,每次我嘗試編譯我的C++ PROGRAMM我得到的輸出是這樣的:QT:未定義的引用「mysql_something @ NR」

release/dialog.o:dialog.cpp:(.text+0x9e): undefined reference to `[email protected]' 
release/dialog.o:dialog.cpp:(.text+0xe1): undefined reference to `[email protected]' 

瀏覽整天找解決方法,教程,無論如何,閱讀教程,卸載mingw,MySQL服務器,QT和再次安裝一切。我再次刪除qt並從源代碼構建它...用0.3 mingw-utils reimp.exe和dlltools.exe等轉換libmysql.dll,沒有任何幫助。在使用QT(只是記事本++和mingw)之前,我也有鏈接器警告,並告訴我一些關於stdcall-fixup-disable的內容,但程序編譯和工作。

後來我會再次重新安裝一切我認爲,目前的設置沒有比其他安裝更好的工作之前,我甚至不知道我從源頭上構建qt。 是否有任何簡單(普通,簡單)的方式來獲得Qt,MinGW,C++,MySQL5.5一起工作?

EDIT2:我現在糾正的代碼,我得到它的工作,這是一些最起碼的代碼片段開始說起:

#include <QtCore/QCoreApplication> 
#include <QMYSQLDriver> 
#include <qsqldatabase.h> 
#include <QtSql> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication app(argc, argv); 

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("localhost"); 
    // insert other connection options here 

    if(!db.open()){ 
     // dp not open, add some debug text and stuff, exit or retry 
    } 

    //db should be open at this place, add code here 

    return app.exec(); 
} 
+0

作爲提示,您可以在Google上搜索此錯誤消息,刪除您的特定關鍵字,輸入查詢:* undefined reference to mysql_init *。 – vz0 2011-01-25 19:24:15

+0

好吧,我想我現在會接受一個答案,因爲我的問題現在不再是一個未鏈接的庫,但運行時錯誤 – Baarn 2011-01-29 15:31:22

回答

3

這聽起來像你需要將mysql庫添加到構建過程。如果您使用的是Qt的qmake系統,例如:

LIBS += -L/wherever/the/mysql/lib/is -lmysql 

在項目的.pro文件中。

+0

這幫助,我的程序現在編譯。但問題continue =/mysql_init(my);工作正常,但它在mysql_real_connect()崩潰;我編輯我的帖子與我有一小部分的代碼 – Baarn 2011-01-29 11:49:19

1

與MYSQL庫鏈接它:

如果您正在使用GCC:

$ gcc -Wall your_file.c - o your_program -lmysql 

另外,你可能要添加一個-L目錄包括在安裝了MySQL的庫的地方。

如果您提供確切的編譯行/機制(Makefile,IDE等),它將有所幫助。

3

Qt的二進制分佈不包含MySQL插件內置它。您必須添加它manualy 您還應該在您的.pro文件中添加QT += sql

0

如果您使用的是Eclipse CDT,則需要將MySQL庫添加到鏈接器設置中。轉到項目屬性 - > GCC++鏈接器 - >庫,並添加mysql