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 :

Compilation de QMYSQL sous Windows avec MinGW


Sujet :

Bases de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué

    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut Compilation de QMYSQL sous Windows avec MinGW
    La méthode générale pour installer le plug-in QMYSQL est de recompiler entièrement Qt ; or, il existe une technique moins lourde.

    Compilation de QMYSQL sous Windows avec MinGW

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Avec les versions de gcc > 4, il n'est plus nécessaire d'utiliser dlltool et reimp.

    Il suffit d'utiliser la bibliothèque d'importation, libmysql.lib fournie dans les binaires de mysql, donc en utilisant "-llibmysql" au lieu de "-lmysql" dans l'appel à qmake.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 9
    Par défaut Problème de compilation du driver MySQL
    Bonjour,

    j'ai suivi la procédure indiquée sur ce site qui me produit bien deux .a et deux .dll que j'ai pris soin de copier dans le dossier sqldrivers de Qt (l'installation ne les copie pas).
    Mais quand je lance mon application, celle-ci n'arrive pas à charger le driver MySQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
    J'ai activé le débug pour les plugins avec QT_DEBUG_PLUGINS et Qt indique que ces plugins ne sont pas valides*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    QFactoryLoader::QFactoryLoader() looking at "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/libqsqlmysql4.a" 
    "The file 'C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/libqsqlmysql4.a' is not a valid Qt plugin." 
             not a plugin 
    QFactoryLoader::QFactoryLoader() looking at "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/libqsqlmysqld4.a" 
    "The file 'C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/libqsqlmysqld4.a' is not a valid Qt plugin." 
             not a plugin 
    QFactoryLoader::QFactoryLoader() looking at "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll" 
    QLibraryPrivate::loadPlugin failed on "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll" : "Cannot load library C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll: La procédure spécifiée est introuvable." 
    "Cannot load library C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll: La procédure spécifiée est introuvable." 
               could not load
    Savez-vous s'il s'agit d'un problème de compilation du driver ou d'installation*?
    Lors de la compilation je ne suis pas sûr des headers et lib MySQL à utiliser, faut il prendre ceux fournis dans connector C, dans Connector C++ ou dans Server*? mais j'ai essayé avec les 3 et à chaque fois j'obtiens le même résultat.

    Merci d'avance
    Xavier.

  4. #4
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Le fichier .a n'est pa
    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
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Le fichier .a n'est pas un plug-in à proprement parler, juste un fichier d'importation de la DLL, tu n'as pas à t'en soucier à moins d'avoir un besoin particulier.

    Tu utilises bien un exécutable en release ? (Oui, chaque plug-in a une clé particulière qui dépend notamment de la version de Qt et du mode de compilation - debug ou release. Si les DLL utilisées par ton exécutable ne sont pas compilées de la même manière, Qt refusera de les charger.)
    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 !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Comme il y a une erreur de chargement de la dll, et pas un refus de la charger ("Plugin uses incompatible Qt library..."), peut-être que tu n'as pas copié libmysql.dll dans le bon répertoire ("C:/QtSDK/Desktop/Qt/4.8.0/mingw/bin").

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 9
    Par défaut
    Merci pour vos réponses rapides*!

    alors pour ce qui est des .a je les ai copié avec les .dll car c'est ce qui est indiqué dans le tuto, il ne faut quand même pas les supprimer*?
    Pour mon exécutable, je le lance à partir de QtCreator et j'ai essayé les deux modes release et debug et ça ne change pas le problème. Dans le mode release Qt cherche bien à me charger qsqlmysql4.dll mais n'y arrive pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QFactoryLoader::QFactoryLoader() looking at "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll" 
    QLibraryPrivate::loadPlugin failed on "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll" : "Cannot load library C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll: La procédure spécifiée est introuvable." 
    "Cannot load library C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll: La procédure spécifiée est introuvable." 
               could not load
    et il reconnait bien que qsqlmysqld4.dll (version de debug si j'ai bien tout compris) ne correspond pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QFactoryLoader::QFactoryLoader() looking at "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysqld4.dll" 
    In C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysqld4.dll:
      Plugin uses incompatible Qt library
      expected build key "Windows mingw release full-config", got "Windows mingw debug full-config"
    "The plugin 'C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysqld4.dll' uses incompatible Qt library. Expected build key "Windows mingw release full-config", got "Windows mingw debug full-config"" 
             not a plugin
    Et en mode debug, j'ai bien le comportement inverse, il a l'air d'essayer de charger la version de debug sans y arriver et rejette bien la version release:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    QFactoryLoader::QFactoryLoader() looking at "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll" 
    In C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll:
      Plugin uses incompatible Qt library
      expected build key "Windows mingw debug full-config", got "Windows mingw release full-config"
    "The plugin 'C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysql4.dll' uses incompatible Qt library. Expected build key "Windows mingw debug full-config", got "Windows mingw release full-config"" 
             not a plugin 
    QFactoryLoader::QFactoryLoader() looking at "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysqld4.dll" 
    QLibraryPrivate::loadPlugin failed on "C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysqld4.dll" : "Cannot load library C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysqld4.dll: La procédure spécifiée est introuvable." 
    "Cannot load library C:/QtSDK/Desktop/Qt/4.8.0/mingw/plugins/sqldrivers/qsqlmysqld4.dll: La procédure spécifiée est introuvable." 
               could not load
    Je suppose donc qu'il faudrait savoir ce que signifie «La procédure spécifiée est introuvable»…

    Pour ce qui est de libmysql.dll j'en ai bien copié un dans C:/QtSDK/Desktop/Qt/4.8.0/mingw/bin mais j'en avais plusieurs d'installés avec MySQL, savez-vous s'il faut prendre la version fournie dans «*MySQL Server 5.5*», dans «*Connector C 6.0.2\lib\debug*», ou dans «*Connector C 6.0.2\lib\opt*»*?
    Je n'ai trouvé aucune information traitant de l'installation de versions récentes de MySQL et n'ai aucune idée de s'il faut utiliser les fichiers «serveur» ou «connecteurs» si vous en savez plus, je suis preneur.

    Merci à vous
    Xavier.

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/01/2015, 09h45
  2. Compilation de QMYSQL sous Win avec MinGW
    Par zebedee dans le forum Contribuez
    Réponses: 0
    Dernier message: 02/12/2010, 12h54

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