qt:未定义引用'mysql_something @ nr'

时间:2011-01-25 18:24:10

标签: c++ mysql qt mingw

我现在真的被困住,每当我尝试编译我的c ++程序时,我得到这样的输出:

release/dialog.o:dialog.cpp:(.text+0x9e): undefined reference to `mysql_init@4'
release/dialog.o:dialog.cpp:(.text+0xe1): undefined reference to `mysql_real_connect@32'

浏览一整天,找到解决方法,教程,无论如何,阅读教程,卸载mingw,mysql服务器,qt并再次安装所有内容。我再次删除了qt并从源代码构建它...转换libmysql.dll与0.3 mingw-utils reimp.exe和dlltools.exe等等,没有任何帮助。

在使用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();
}

4 个答案:

答案 0 :(得分:3)

听起来你需要将mysql库添加到构建过程中。如果你正在使用Qt的qmake系统,比如:

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

在项目的.pro文件中。

答案 1 :(得分:3)

Qt的二进制分发不包含内置的MySQL插件。你必须添加它manualy 您还应该在.pro文件中添加QT += sql

答案 2 :(得分:1)

将其与MYSQL库链接:

如果您正在使用GCC:

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

此外,您可能希望添加-L目录以包含安装MySQL库的位置。

如果您提供精确的编译行/机制(Makefile,IDE等),将会有所帮助。

答案 3 :(得分:0)

如果您使用的是Eclipse CDT,则需要将MySQL库添加到链接器设置中。转到项目属性 - &gt; GCC ++链接器 - &gt;库,并添加mysql