Qt c ++ eingebettetes MySQL
Ich habe ein Programm auf QT 5.0.2 mit MingW 4.7 unter Windows mit MySQL Server 5.7 geschrieben.
Ich habe zuerst mit der Installation des MYQSL-Treibers für QT mit begonnendieses Tutorial. Es funktioniert und ich kann auf die Daten zugreifen, aber ich muss den Server von MySQL Workbench starten, oder es wird keine Verbindung mit der Datenbank hergestellt (weil es nicht läuft).
Für mein Programm muss der Server beim Ausführen des Programms gestartet werden. Dies ist der Teil, in dem ich stecke. Ich weiß, ich muss das benutzenlibmysqld Bibliothek aber ich scheine es nicht zum Laufen zu bringen. Ich habe nicht viele nützliche Beispiele gefunden, also habe ich es so versucht:
Dies ist die .pro-Datei:
QT += core sql
QT += sql
QT -= gui
TARGET = Temp
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += "C:\Program Files (x86)\MySQL\MySQL Server 5.7\include"
INCLUDEPATH += "C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib"
LIBS += -L"C:\Program Files (x86)\MySQL\MySQL Server 5.7\lib" -llibmysqld
Das ist meine Hauptdatei:
#include <QtSQL>
#include <qsql_mysql.h>
#include <mysql.h>
int main(int argc, char *argv[])
{
QSqlDatabase mydb;
MYSQL *mysql;
static char *server_options[] = \
{ "mysql_test", "--defaults-file=/home/cquiros/temp/mysql/my.cnf", NULL };
int num_elements = (sizeof(server_options) / sizeof(char *)) - 1;
static char *server_groups[] = { "embedded", NULL };
qDebug() << "Loading embedded";
mysql_library_init(num_elements, server_options, server_groups);
mysql = mysql_init(NULL);
mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, "embedded");
mysql_options(mysql, MYSQL_OPT_USE_EMBEDDED_CONNECTION, NULL);
mysql_real_connect(mysql, NULL,NULL,NULL, "database1", 0,NULL,0);
QMYSQLDriver *drv = new QMYSQLDriver(mysql);
mydb = QSqlDatabase::addDatabase(drv,"connection1"); //Add the database connector to MySQL
mydb.setDatabaseName("test");
if (!mydb.open()) //Try to opens the database
{
qDebug() << "Error while opening the database";
}
}
Wenn ich das starte, bekomme ich folgende Fehlermeldung: "
Fehler: undefinierter Verweis auf `Kobold__ZN12QMYSQLDriverC1EP8st_mysqlP7QObject 'collect2.exe: -1: Fehler: Fehler: ld hat 1 Exit-Status zurückgegeben
Kann mir jemand helfen, auf die Spur zu kommen?