Qt c ++ osadzony mysql
Pisałem program na QT 5.0.2 z mingw 4.7 na windows z serwerem mysql 5.7.
Zacząłem od instalacji sterownika MYQSL dla QT zten samouczek. Działa i mogę uzyskać dostęp do danych, ale muszę uruchomić serwer ze środowiska roboczego mysql lub nie nawiązuje połączenia z bazą danych (ponieważ nie działa).
Do mojego programu potrzebuję serwera do uruchomienia, gdy uruchomię program. To jest część, w której utknąłem. Wiem, że muszę użyćbiblioteka libmysqld ale nie wydaje mi się, żeby to działało. Nie znalazłem wielu przydatnych przykładów, więc spróbowałem tak:
to jest plik .pro:
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
to jest mój główny plik:
#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";
}
}
Gdy to uruchomię, pojawia się ten błąd: „
error: undefined reference to `chochlik__ZN12QMYSQLDriverC1EP8st_mysqlP7QObject 'collect2.exe: -1: błąd: błąd: ld zwrócił 1 kod wyjścia
Czy ktoś może mi pomóc?