2

私はmysqlサーバー5.7を搭載したWindowsでmingw 4.7を使用してQT 5.0.2でプログラムを書いています。

最初に、このチュートリアルで QT 用の MYQSL ドライバーをインストールすることから始めました。それは機能し、データにアクセスできますが、mysql ワークベンチからサーバーを起動する必要があります。そうしないと、データベースとの接続が確立されません (実行されていないため)。

私のプログラムでは、プログラムの実行時にサーバーを起動する必要があります。これは私が立ち往生している部分です。libmysqld ライブラリを使用する必要があることはわかっていますが、機能していないようです。あまり有用な例が見つからなかったので、次のように試しました:

これは .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

これは私のメインファイルです:

#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";
        }
}

これを実行すると、次のエラーが表示されます: "

エラー: ` imp __ZN12QMYSQLDriverC1EP8st_mysqlP7QObject' への未定義の参照 collect2.exe:-1: エラー: エラー: ld が 1 つの終了ステータスを返しました

誰でも私が軌道に乗るのを手伝ってもらえますか?

4

0 に答える 0