Windows: MySQL-Driver-Plugin mit MinGW 4.9.2 und Qt 5.5.1 (32-bit) erstellen

Geschrieben von Georg Lassnig
Hauptkategorie: E67-ITS Blog
on 31 Januar 2016
Zugriffe: 7089
 Beim programmieren mit Qt5-Windows kommt man früher oder später an den Punkt an dem man eine Verbindung zu einer Datenbank benötigt. Leider muss man bei den Windows Versionen von Qt die benötigten SQL-Driver-Plugins in Eigenregie kompilieren. Dieser Beitrag beschreibt die dazu nötigen Schritte.
 

Was dieser Beitrag nicht beschreibt:

Hier wird nicht beschrieben wie Qt oder MySQL installiert werden. Es wird vorausgesetzt, dass bereits eine funktionierende Installation der Programme/Software vorhanden ist.
Die in diesem Beitrag verwendeten Software Versionen sind: Qt 5.5.1 MinGW 4.9.2 32-bit (leider gibt es keine 64-bit Variante mit MinGW) und der MySQL-Server 5.7.7 CE 32-bit.
 

Voraussetzung:

Über das MySQL-Server-Setup nur die "Development Components -> Client C API library" installieren.
Wichtig: Keine Leerzeichen im Installationspfad!

Beispiel-Verzeichnisse:

  • MySQL-API-Library: C:\MySQL\MySQLServer5.7\
  • Qt: C:\Qt\5.5\
Die oben und weiter unten im Beitrag angegebenen Pfade müssen natürlich an die eigenen Installationspfade und Gegebenheiten angepasst werden.
 

1:  Kompilieren

Die Qt-Eingabeaufforderung (CMD) starten. Normalerweise befindet sich ein Eintrag im Startmenü unter Qt -> 5.5 -> MinGW 4.9.2 (32-bit).
In das Source-Verzeichnis vom MySQL-Plugin wechseln:
C:\Qt\5.5\Src\qtbase\src\plugins\sqldrivers\mysql\
Mit Hilfe von QMake die Makefiles des Projektes erstellen.
Befehl: qmake "INCLUDEPATH+=C:/MySQL/MySQLServer5.7/include" "LIBS+=C:/MySQL/MySQLServer5.7/lib/libmysql.lib" mysql.pro
Das MySQL-Plugin kompilieren. (Evtl. den gesamten Pfad zum Programm verwenden)
  • Release-Version: C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe -f Makefile.Release
  • Debug-Version: C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe -f Makefile.Debug 

2: Libraries nach MinGW plugins/ und bin/ kopieren

Die Datei qsqlmysql.dll aus dem Release-Verzeichnis und wenn kompiliert, die Datei qsqlmysqld.dll aus dem Debug-Verzeichnis in das Standard-Plugin-Verzeichnis C:\Qt\5.5\mingw492_32\plugins\sqldrivers kopieren.
Zusätzlich noch die libmysql.dll aus dem Verzeichnis C:\MySQL\MySQLServer5.7\lib in das Verzeichnis C:\Qt\5.5\mingw492_32\bin kopieren, damit das Plugin erkannt wird und der MySQL-Client zur Verfügung steht.
 

Tipp:

 Sollte es während des kompilierens zu folgender Fehlermeldung kommen:
C:\MySQL\MySQLServer57\include/mysql_com.h:22:30: fatal error: binary_log_types.h: No such file or directory

Wurden die folgenden Header Dateien während der MySQL 5.7 Community Edition Installation nicht mit installiert.
  • binary_log_funcs.h
  • binary_log_types.h
 

Lösung:

  • Die MySQL Server Sourcen von hier herunterladen: MySQL.
  • Das *.tar.gz Archiv entpacken. ( z.B. mit 7Zip )
  • Nach dem entpacken in folgendes Verzeichnis wechseln: mysql-5.7.7-rc\mysql-5.7.7-rc\libbinlogevents\export\
  • Header-Dateien binary_log_funcs.h und binary_log_types.h aus diesem Verzeichnis nach C:\MySQL\MySQLServer5.7\include kopieren und erneut bei Punkt 1 dieser Anleitung beginnen.

Hoch