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

 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.
E67 Blog Beiträge
  • Windows: MariaDB-Driver-Plugin mit MinGW 11.2.0 und Qt 6.5.2 (64-bit) erstellen

    Mehr ...

  • Windows: MariaDB-Driver-Plugin mit MinGW 11.2.0 und Qt 6.4.1 (64-bit) erstellen

    Mehr ...

  • Windows: MariaDB-Driver-Plugin mit MinGW 8.1.0 und Qt 5.15.2 (64-bit) erstellen

    Mehr ...

  • Windows: MariaDB-Driver-Plugin mit MinGW 11.2.0 und Qt 6.2.3 (64-bit) erstellen

    Mehr ...

  • VMware
    VMware Wokstation Pro: Cannot open /dev/vmmon

    Mehr ...

  • Linux: Die sterr-Ausgabe im Qt Creator wieder aktivieren

    Mehr ...

  • Raspbian: phpLDAPadmin mit nginx installieren und konfigurieren

    Mehr ...

  • Raspbian: LDAP Server/Client installieren und konfigurieren

    Mehr ...

  • Raspbian: Usermin installieren

    Mehr ...

  • Raspbian: UDEV-Regel für externe Hdd‘s

    Mehr ...

  • Raspbian: Webmin installieren

    Mehr ...

  • Skrooge 2.4.0 aus den Quellen kompilieren und installieren

    Mehr ...

  • SDDM/Plasma5: KWallet automatisch beim Login öffnen

    Mehr ...

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

    Mehr ...

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

    Mehr ...

  • HTTP-Status-Codes

    Mehr ...

  • Dynamische oder statische Webseite?

    Mehr ...