qt: неопределенная ссылка на «mysql_something @ nr» - PullRequest
3 голосов
/ 25 января 2011

Я действительно застрял прямо сейчас, каждый раз, когда я пытаюсь скомпилировать свою программу на 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 (просто 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();
}

Ответы [ 4 ]

3 голосов
/ 25 января 2011

Похоже, вам нужно добавить библиотеку mysql в процесс сборки. Если вы используете систему Qmake Qt, что-то вроде:

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

в файле .pro для проекта.

3 голосов
/ 25 января 2011

Двоичный дистрибутив Qt не содержит встроенного плагина MySQL. Вы должны добавить это manualy Вы также должны добавить QT += sql в ваш файл .pro.

1 голос
/ 25 января 2011

Свяжите его с библиотеками MYSQL:

Если вы используете GCC:

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

Кроме того, вы можете добавить каталог -L, чтобы указать место, где у вас есть библиотеки MySQL.Установлено.

Будет полезно, если вы укажете точную строку / механизм компиляции (Makefile, IDE и т. д.).

0 голосов
/ 25 января 2011

Если вы используете Eclipse CDT, вам нужно добавить библиотеку MySQL в настройки компоновщика. Перейдите в Свойства проекта -> GCC ++ linker -> библиотеки и добавьте mysql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...