IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Discussion :

QMYSQL : erreurs de compilation pour le plug-in


Sujet :

Bases de données

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut QMYSQL : erreurs de compilation pour le plug-in
    Bonjour,
    cela fait deux jours que je galère.
    j'ai installé "Qt SDK: Complete Development Environment" (Qt 4.5.2)
    j'utilise mysql-essential-5.1.37-win32.
    j'ai ajouté dans mon prog.pro: QT += sql
    mais la connexion à la BD ne s'établit pas.
    j'ai vu dans la doc qu'il faut compiler Qt, alors j'ai suivi le tuto "How to Build the QMYSQL Plugin on Windows" dans l'aide de Qt.
    mais ça donne des erreurs de compilation.
    Bref, c'est le blocage totale.

    Est ce qu'il existe une solution sans recompiler Qt ?
    Sinon, quelle est la méthodologie à suivre pour la version de Qt que j'utilise?
    Je vous remercie de votre aide.

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Salut,

    Il n'existe pas, pour le moment, de build public qui contient ce plug-in...

    Quelles erreurs rencontres-tu lors de la compilation ? Sans elles, ça va être un peu dur de t'aider...

    Pour compiler, il y a juste ces quelques commandes à exécuter dans un shell configuré (%PATH% qui contient le compilateur, %LIB% et %INCLUDE% pour MySQL, par exemple), dans le répertoire des sources de Qt (avec le SDK : C:\Qt\SDK\2009.03\Qt, si mes souvenirs sont exacts), celui qui contient configure.exe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    configure -plugin-sql-mysql //Autres paramètres
    make
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    rebonjour,
    d'abord je vous remercie d'être intéressé à m'aider.
    je vous livre ci joint la capture d'écran des erreurs.
    voilà comment j'ai procédé:
    J’ai déjà libmysql.a dans C:\Program Files\MySQL\MySQL Server 5.1\lib\opt

    Dans C:\Qt\2009.03\qt; j’ai exécuté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    configure -plugin-sql-mysql -release
    Dans %QTDIR%/src/plugins/sqldrivers/mysql; J’ai exécuté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=-LC:\MYSQL\LIB\OPT -lmysql"  mysql.pro
    dans %QTDIR%/plugins/sqldrivers; j’ai exécuté:
    je vous remercie
    Images attachées Images attachées  

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Le module WebKit ne se compile, comme très souvent, pas bien. Essaye donc de le désactiver. Si tu en as besoin, on cherchera une solution par après.

    Pour le désactiver, passer ce drapeau à configure : -nowebkit
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    bonjour,
    vraiment c'est décourageant.
    Après plusieurs désinstallations et réinstallation, j'ai toujours deux erreurs mais cette fois-ci à propos de fichiers mysql.
    je vous soumets en pièce jointe la capture d'écran.
    Ci dessous un récapitulatif de la méthodologie que j'ai suivi en six étapes.


    1) installation personnalisée de mysql-essential-5.1.37-win32
    (fichiers .h inclus; répértoire C:\MYSQL)

    2) Installation de qt-sdk-win-opensource-2009.03.1
    répertoire d'installation C:\Qt\2009.03

    3) Installation des utilités Mingw
    Copie du contenu du dossier bin de Mingw Utilities dans
    C:\Qt\2009.03\mingw\bin

    4) Configuration
    Ouvrir Qt Command Prompt:
    C:\Qt\2009.03\qt> configure.exe -debug-and-release -plugin-sql-mysql -no-webkit
    -nowebkit a été ajouté car le système donne deux erreurs sur le webkit

    5)Configuration du plugin MYSQL
    toujours sous Qt Command Prompt
    C:\Qt\2009.03\qt> cd src\plugins\sqldrivers\mysql
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> reimp -d C:\mysql\lib\opt\libmysql.lib
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> dlltool -k --input-def LIBMYSQL.def --dllname libmysql.dll --output-lib libmysql.a
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> qmake "INCLUDEPATH+=C:\mysql include" "LIBS+=-L. -lmysql" mysql.pro

    6) Compilation de Qt
    toujours sous Qt Command Prompt
    C:\Qt\2009.03\qt> mingw32-make sub-src
    Images attachées Images attachées  

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    mysql.h : No such file or directory
    Il y a un problème d'include ou de d'accès au fichier.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    bonjour,
    Mon fichier "mysql.h" se trouve dans "C:\MySQL\include".
    A la fin de la cinquième étape "5)Configuration du plugin MYSQL";
    j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> qmake "INCLUDEPATH+=C:\mysql include" "LIBS+=-L. -lmysql" mysql.pro
    Ne faudrait il pas mettre plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=-L. -lmysql" mysql.pro
    Remarquer antislash entre mysql et include
    Je vous prie de me dire si c'est le dernier réglage à apporter, parce que ça fait six ou sept fois que je désinstalle et réinstalle Mysql et Qt.
    Je vous remercie.

  8. #8
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Normalement, avec le backslash, ça devrait fonctionner. Pas besoin de désinstaller-réinstaller Qt + MySQL à chaque fois, cette commande permet de nettoyer l'arborescence de Qt (la remettre à neuf) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    make clean | make confclean
    Par contre, je me pose une question. À quoi servent ces deux lignes-ci, dans ton listing de commandes précédent ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> reimp -d C:\mysql\lib\opt\libmysql.lib
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> dlltool -k --input-def LIBMYSQL.def --dllname libmysql.dll --output-lib libmysql.a
    Elles font toutes les deux la même chose (la première se sert d'un .LIB de VS, méthode parfois périlleuse ; la seconde, de la DLL elle-même, méthode sûre) !

    Si tu as encore des problèmes d'include, copie les fichiers nécessaires (mysql.h & libmysql.a) dans les dossiers de MinGW (la version que tu utilises).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    les fichiers "mysql.h & libmysql.a", je les copie dans le répertoire "include" de mingw ?.

    je n'utilise pas VS mais mingw
    SVP, dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> reimp -d C:\mysql\lib\opt\libmysql.lib
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> dlltool -k --input-def LIBMYSQL.def --dllname libmysql.dll --output-lib libmysql.a
    Est ce que je dois supprimer la première ligne?
    le SDK Qt installe, de lui même, un package VC++ 2008.
    Je suis pas habitué à ces trucs de "reimp", "input-def" et autre "output-lib".
    je voudrais simplement pouvoir utiliser Mysql avec Qt mais apparement il faudrait y passer beaucoup de temps ou reprendre ses études !!!!!

    merci.

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    ah, j'allais oublier,
    écoutez dourouc05, si ça marche, je paye des Jupiler à l'outre meuse, dommage que le 14/08 est passé.

  11. #11
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par petitbison Voir le message
    Bonjour,
    les fichiers "mysql.h & libmysql.a", je les copie dans le répertoire "include" de mingw ?.
    Pour faire simple :
    .h -> MinGW/include (répertoire des en-têtes)
    .a -> MinGW/lib (répertoire des librairies d'import)

    Citation Envoyé par petitbison Voir le message
    je n'utilise pas VS mais mingw
    SVP, dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> reimp -d C:\mysql\lib\opt\libmysql.lib
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> dlltool -k --input-def LIBMYSQL.def --dllname libmysql.dll --output-lib libmysql.a
    Est ce que je dois supprimer la première ligne?
    le SDK Qt installe, de lui même, un package VC++ 2008.
    Je suis pas habitué à ces trucs de "reimp", "input-def" et autre "output-lib".
    je voudrais simplement pouvoir utiliser Mysql avec Qt mais apparement il faudrait y passer beaucoup de temps ou reprendre ses études !!!!!
    Si le fichier .a produit avec la première ligne fonctionne, pas besoin de la deuxième. S'il ne fonctionne pas, tu le vires, puis tu utilises la deuxième.

    Petite explication de la deuxième ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> dlltool -k --input-def LIBMYSQL.def --dllname libmysql.dll --output-lib libmysql.a
    --input-def : fichier qui liste toutes les méthodes implémentées dans la DLL.
    --dllname : DLL dont on veut le .a.
    --output-lib : fichier .a résultant.

    Le SDK contient des parties compilées avec VC (QtCreator uniquement), ces parties en ont besoin pour fonctionner... Pourquoi avec VC ? Ils sont sûrement remarqué qu'il y avait moins de problème, de meilleures performances, ou autre chose du genre.

    Peu de gens viennent sur le forum pour nous dire qu'ils ont compilé le plug-in correctement... Et tu ne seras, malheureusement, pas le dernier à venir t'en plaindre...


    (e) Vu que la DLL est compilée avec un runtime VC, tu devras distribuer ce runtime VC en même temps que ton application, même si tu utilises MinGW : MySQL en aura besoin pour fonctionner... Mélanger les runtime est un peu hasardeux, et des problèmes pourrait subvenir à l'exécution à cause de cela... La seule solution est de recompiler la libmysql avec MinGW. Mais, d'abord, essayons de compiler ce plug-in...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    D'abord, je tiens à vous remercier de votre patience et de votre aide.
    je vous remercie également pour les explications et les astuces que vous m'avez donné.

    EUREKA. ça a marché;

    Pour webkit on verra plus tard.
    j'ai remarqué que:
    la méthode "reimp" crée le fichier LIBMYSQL.def dans Qt\2009.03\qt\src\plugins\sqldrivers\mysql>
    la méthode "dlltool" crée le fichier libmysql.a dans Qt\2009.03\qt\src\plugins\sqldrivers\mysql>
    et qu'il faut les utiliser toutes deux.
    je donne enfin la méthodologie détaillée, si elle peut être utile à quelqu'un.
    #############################################
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    1) Installation personnalisée de mysql-essential-5.1.37-win32
    http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-essential-5.1.37-win32.msi/from/pick
    Choisir installation personnalisée pour inclure les fichiers .h inclus; 
    Répértoire d'installation C:\MYSQL
     
    2) Installation de qt-sdk-win-opensource-2009.03.1
    http://download.qt.nokia.com/qtsdk/qt-sdk-win-opensource-2009.03.1.exe
    Répertoire d'installation C:\Qt\2009.03 c'est l'installation par défaut
     
     
    3) Installation des utilités Mingw
    mingw-utils-0.3.tar.gz de sourceforge
    Décompresser puis Copier le contenu du dossier bin de Mingw Utilities dans 
    C:\Qt\2009.03\mingw\bin
     
    4) Configuration
    Ouvrir Qt Command Prompt:
    C:\Qt\2009.03\qt> configure.exe -debug-and-release -plugin-sql-mysql -no-webkit
    -no-webkit a été ajouté car le système donne deux erreurs sur le webkit
     
    5)Configuration du plugin MYSQL
    Toujours sous Qt Command Prompt
    C:\Qt\2009.03\qt> cd src\plugins\sqldrivers\mysql
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> reimp -d C:\mysql\lib\opt\libmysql.lib
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> dlltool -k --input-def LIBMYSQL.def --dllname libmysql.dll --output-lib libmysql.a
    Copier mysql.h dans C:\Qt\2009.03\mingw\include
    Copier libmysql.a dans C:\Qt\2009.03\mingw\lib
    C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql> qmake "INCLUDEPATH+=C:\mysql\include" "LIBS+=-L. -lmysql" mysql.pro
     
    6) Compilation de Qt
    Toujours sous Qt Command Prompt
    C:\Qt\2009.03\qt> mingw32-make sub-src
     
    7) Ajout de libmysql.dll dans le path
    C:\Qt\2009.03\bin>
    Editer qtenv.bat
    Et modifier set PATH=%PATH%;C:\Qt\2009.03\bin;C:\Qt\2009.03\mingw\bin
    Par
    set PATH=%PATH%;C:\Qt\2009.03\bin;C:\Qt\2009.03\mingw\bin;C:\MySQL\bin
     
    8)Dans MonProg.pro, ajouter 
    QT += sql
    Lancer ensuite 
    mingw32-make

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de compilation (pour tous les programmes)
    Par LittleWhite dans le forum Qt
    Réponses: 10
    Dernier message: 28/11/2010, 12h46
  2. erreur de compil pour curl
    Par webfranc dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 12/12/2008, 21h22
  3. Erreur à la compilation pour un bouton créé dynamiquement
    Par echap2000 dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/08/2008, 17h23
  4. Réponses: 2
    Dernier message: 30/05/2008, 11h56
  5. Réponses: 12
    Dernier message: 12/08/2006, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo