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 funktionierende Installationen der Programme/Software vorhanden sind.
Die in diesem Beitrag verwendeten Software Versionen sind: Qt 5.7 MSVC2015 64-bit und der MySQL-Server 5.7.14 CE 64-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.7\
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.7 -> MSVC 2015 (64-bit).
In das Source-Verzeichnis vom MySQL-Plugin wechseln:
C:\Qt\5.7\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)
- Befehl: C:\Qt\Tools\QtCreator\bin\jom.exe
Die Dateien qsqlmysql.dll, qsqlmysqld.pdb und qsqlmysqld.dll in das Standard-Plugin-Verzeichnis C:\Qt\5.7\msvc2015_64\plugins\sqldrivers kopieren.
Zusätzlich noch die libmysql.dll aus dem Verzeichnis C:\MySQL\MySQLServer5.7\lib in das Verzeichnis C:\Qt\5.7\msvc2015_64\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\MySQL5.7\include kopieren und erneut bei Punkt 1 dieser Anleitung beginnen.