Twitter
Archivi

Programmazione

Utilizzare MySQL in Qt SDK(come compilare la plugin in Windows)

Mi tocca scrivere una guida… più che altro un reminder per me, ogni volta che reinstallo QT perdo tempo per cercare di ricordare come si implementa MySQL dentro QT SDK (o QT Creator o come volete chiamarlo).

PREPARAZIONE SISTEMA

  1. Scaricare i seguenti pacchetti
    • MySQL Community Server (prima opzione mysql-5.6.3-m6-win32.msi)
    • MinGW-Utils-0.3
    • Installate i sorgenti (source) di Update QT SDK ed installate i sorgenti della versione di QT che state utilizzando…
    • Estrarre da MinGW-Utils-0.3.tar.gz tutto il contenuto della cartella bin dentro C:\QtSDK\mingw\bin
  2. Installare MySQL
    • Scegliere la modalità Custom
    • Deselezionare tutto (X rossa)
    • Abilitare l’installazione solo di “Client C API library (shared)
    • Scegliere come path di installazione “C:\MySQL
    • Installare ed al termine scegliere di non aprire il modulo di configurazione…
  3. Configurare le PATH del sistema dal pannello delle proprietà di sistema
    • Usare il comando SYSDM.CPL nel campo di ricerca del menù start di windows
    • Andare su Avanzate>Variabili d’ambiente
    • Nella sezione Variabili di sistema aggiungere (se non esiste già) Var: QTDIR con Valore: C:\QtSDK\Desktop\Qt\4.7.4\mingw
    • Aggiungere anche Var: MINGW con Valore: C:\QtSDK\mingw
    • Selezionare la variabile PATH ed aggiungere alla fine del valore presente la stringa ;%QTDIR%\bin;%MINGW%\bin;
    • Salvare e chiudere il pannello.

COMPILAZIONE

  1. Aprire il prompt dei comandi (digitate cmd nella barra di ricerca del menu start)
  2. Digitare quanto segue
    • cd C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\mysql
    • reimp -d %MYSQL_PATH%\lib\opt\libmysql.lib
    • dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a
    • qmake "INCLUDEPATH+=C:/MySQL/include" "LIBS+=-L. -lmysql" -o Makefile mysql.pro
    • mingw32-make debug
    • mingw32-make release

A questo punto, se tutto è andato per il verso giusto e non ci sono stati problemi/errori, nelle cartelle release e debug dovrebbero esserci le nostre librerie MySQL.
E’ necessario copiare i seguenti file nella cartella C:\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\sqldrivers

  • libqsqlmysqld4.a (debug)
  • qsqlmysqld4.dll (debug)
  • libqsqlmysql4.a (release)
  • qsqlmysql4.dll (release)

Copiare il file C:\MySQL\lib\libmysql.dll in C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin

A questo punto è possibile compilare utilizzando il seguente codice per controllare se tutto funziona.

#include <QApplication>
#include <QtSql>
int main(int argc, char *argv[]) {
  QCoreApplication a(argc, argv);
  qDebug() << QSqlDatabase::drivers();
  return a.exec();
}

E’ abbastanza fondamentale inserire nel file .pro la riga QT += sql … altrimenti non verranno caricati i moduli SQL.

Il risultato nella finestra di debug dovrebbe essere simile a questo:
(“QSQLITE”, “QMYSQL3“, “QMYSQL“)

G.