Compilation de QMYSQL sous Win avec MinGW
La documentation de Qt est assez incomplete quant aux instructions de compilation et d'installation du module QMYSQL avec MinGW sous Windows, en utilisant un environement opensource. Cet aspect a ete couvert dans plusieurs discussions de ce forum ou ailleurs, mais toutes font appel a une recompilation de Qt avec le support de MySQL. Cette recompilation est parfois delicate et une erreur de packaging de Qt, qui embarque des fichiers tmp, provoque des problemes (cf http://bugreports.qt.nokia.com/browse/QTWEBSITE-81 pour la liste des fichiers a effacer).
Or il existe une methode moins lourde, qui consiste a ne recompiler que le module MySQL, qui sera charge automatiquement par Qt, et qui ne necessite pas la recompilation de Qt avec -qt-sql-mysql.
- Installer les headers C de MySQL dans un chemin n'utilisant pas d'espaces, ex: C:\Dev\MySQL. On peut utiliser l'installeur .msi, par ex. mysql-essential-5.1.53-win32.msi. Installer egalement le client/serveur (car nous aurons besoin de libmysql.dll plus tard), celui-ci peut etre place dans "Program Files" ou autre chemin avec des espaces.
- Installer Qt. Utiliser l'installeur (ex: qt-sdk-win-opensource-2010.05.exe), et installer par exemple dans C:\Dev\Qt\2010.05\qt. La encore ne pas utiliser d'espaces.
- Telecharger mingw-utils-0.3.tar.gz a partir de Sourceforge (lien direct: http://sourceforge.net/projects/ming...ar.gz/download). Note que la version 0.4.x ne fonctionne pas. Installer ces utilities dans votre bin de MinGW, ou bien dans celle qui vient avec Qt (par ex.: C:\Dev\Qt\2010.05\qt\mingw\bin).
- Ouvrir un Qt command prompt. On commence par compiler un fichier object statique compatible avec mingw32-gcc:
Code:
1 2
| cd C:\Dev\MySQL\lib\opt
reimp -d libmysql.lib |
Ceci cree le fichier LIBMYSQL.def.
Code:
dlltool -k -d libmysql.def -l libmysql.a
Ceci cree le fichier libmysql.a.
- On compile ensuite le module QMYSQL:
Code:
1 2 3 4
| cd C:\Dev\Qt\2010.05\qt\src\plugins\sqldrivers\mysql
qmake "INCLUDEPATH+=C:\Dev\MySQL\include" "LIBS+=-LC:\Dev\MySQL\lib\opt -lmysql" mysql.pro
mingw32-make
mingw32-make install |
- Verifier que les fichiers du plugin ont bien ete crees et installes:
Code:
1 2 3 4
| C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\libqsqlmysql4.a
C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\libqsqlmysqld4.a
C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\qsqlmysql4.dll
C:\Dev\Qt\2010.05\qt\plugins\sqldrivers\qsqlmysqld4.dll |
- Copier libmySQL.dll (que l'on trouve dans l'installation client/serveur de MySQL) dans C:\Dev\Qt\2010.05\qt\bin\. Cela permettra a Qt Creator de fonctionner directement avec le plugin QMYSQL lors de son appel dans le code.
Voila! Note: il faudra sans doute distribuer vos applications avec les dll qui vont bien.
Sources de ce topic:
http://www.qtcentre.org/threads/2142...ELP-ME.-Thanks
http://bugreports.qt.nokia.com/brows...mmentId=134340