c++ - qt:对 'mysql_something@nr' 的 undefined reference

标签 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 server、qt 并重新安装所有内容。我再次删除了 qt 并从源代码构建它...使用 0.3 mingw-utils reimp.exe 和 dlltools.exe 等转换了 libmysql.dll,但没有任何帮助。

在使用 QT(仅 notepad++ 和 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();
}

最佳答案

听起来您需要将 mysql 库添加到构建过程中。如果您使用的是 Qt 的 qmake 系统,则类似于:

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

在项目的 .pro 文件中。

关于c++ - qt:对 'mysql_something@nr' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4797359/

相关文章:

qt - 在 Ubuntu Linux 上构建 QT 库

c++ - C++ 中的运行时类型和属性识别

c++ - 通过私有(private) CoCreateInstance 在不注册的情况下使用 DirectShow 过滤器

MYSQL SELECT 跨多个表时速度很慢

mysql - SQL-使用两个内连接执行查询

php - MYSQL 获取第一个活跃的日期

c++ - 如何在 qt 中使用 gui 对象名称运行循环?

c++ - 具有默认参数的重载构造函数

c++ - 模板和继承过滤

qt - PyQt:如何将光标重置为任何悬停的光标