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 d'un programme avec QPSQL


Sujet :

Bases de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Points : 28
    Points
    28
    Par défaut Compilation d'un programme avec QPSQL
    Bonjour,

    Je travaille avec:
    * Windows XP SP2
    * Qt 4.5.1
    * Postgresql 8.4

    J'essais d'accéder à une BD Postgresql/Postgis à partir de Qt. J'ai suivi la doc de Qt pour installer le driver sql QPSQL et tout est allé très bien quand j'ai compilé comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cd %QTDIR%\src\plugins\sqldrivers\psql
    qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
    mingw32-make //je n'ai pas utilisé nmake car elle n'est pas reconnue dans mon qtcommandprompt
    Ensuite, j'ai essayé de compiler un petit code histoire de vérifier la connexion à ma BD avec Qt. Voici le code:
    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
     
    #include "C:/d/dev/qt/451/src/sql/drivers/psql/qsql_psql.h"
    #include <QApplication>
    #include <QtSql/QSqlDatabase>
    #include <QMessageBox>
     
    int main(int argc, char *argv[])
        {
            QApplication app(argc, argv);
            app.addLibraryPath("C:/d/dev/qt/451/src/plugins/sqldrivers");
     
            QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
            db.setHostName("localhost");
            db.setUserName("qpsql");
            db.setPassword("");
            db.setPort(5433);
     
            QString msg1, msg2;
            bool ok = db.open();
            if(ok==true)
                {msg1 = "ok";}
            else
                {msg1 = "Unable to Connect";};
            bool available = db.isDriverAvailable(db.driverName());
            if(available==true)
                {msg1 += db.driverName() + " is available ";}
            else
                {msg1 += db.driverName() + " is NOT available ";};
            QMessageBox::critical(0,"Connection", msg1);
     
            QString pat;
            foreach (QString path, app.libraryPaths())
                { pat += path + "\n";}
            QMessageBox::critical(0, "les paths", pat);
     
            QStringList ql = db.drivers();
            for (int i=1;i<ql.size();i++)
                { msg2 += ql.at(i);}
            QMessageBox::critical(0,"Drivers", msg2);
     
            return app.exec();
        }
    voici le .pro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    TEMPLATE = app
    Qt += sql
    TARGET = qtpgtest
    DEPENDPATH += .
    INCLUDEPATH += C:/d/dev/test/qtpgtest/ \
        C:/d/dev/qt/451/include/QtSql/ \
        .
    LIBS += C:/PostgreSQL/8.4/lib/libpq.lib \
        C:/d/dev/qt/451/src/plugins/sqldrivers/psql/debug/libqsqlpsqld4.a
    SOURCES += main.cpp
    #HEADERS +=
    #FORMS +=
    voici les erreurs:
    C:/d/dev/test/qtpgtest/main.cpp:11: undefined reference to `_imp___ZN12QSqlDatab
    ase17defaultConnectionE'
    debug/main.o(.text+0x260):C:/d/dev/test/qtpgtest/main.cpp:11: undefined reference to `_imp___ZN12QSqlDatabase11addDatabaseERK7QStringS2_'
    debug/main.o(.text+0x32d):C:/d/dev/test/qtpgtest/main.cpp:12: undefined reference to `_imp___ZN12QSqlDatabase11setHostNameERK7QString'
    debug/main.o(.text+0x3a7):C:/d/dev/test/qtpgtest/main.cpp:13: undefined reference to `_imp___ZN12QSqlDatabase11setUserNameERK7QString'
    debug/main.o(.text+0x421):C:/d/dev/test/qtpgtest/main.cpp:14: undefined reference to `_imp___ZN12QSqlDatabase11setPasswordERK7QString'
    debug/main.o(.text+0x489):C:/d/dev/test/qtpgtest/main.cpp:15: undefined reference to `_imp___ZN12QSqlDatabase7setPortEi'
    debug/main.o(.text+0x4b6):C:/d/dev/test/qtpgtest/main.cpp:18: undefined reference to `_imp___ZN12QSqlDatabase4openEv'
    debug/main.o(.text+0x515):C:/d/dev/test/qtpgtest/main.cpp:23: undefined reference to `_imp___ZNK12QSqlDatabase10driverNameEv'
    debug/main.o(.text+0x532):C:/d/dev/test/qtpgtest/main.cpp:23: undefined reference to `_imp___ZN12QSqlDatabase17isDriverAvailableERK7QString'
    debug/main.o(.text+0x5be):C:/d/dev/test/qtpgtest/main.cpp:25: undefined reference to `_imp___ZNK12QSqlDatabase10driverNameEv'
    debug/main.o(.text+0x6d0):C:/d/dev/test/qtpgtest/main.cpp:27: undefined reference to `_imp___ZNK12QSqlDatabase10driverNameEv'
    debug/main.o(.text+0xbcd):C:/d/dev/test/qtpgtest/main.cpp:35: undefined reference to `_imp___ZN12QSqlDatabase7driversEv'
    debug/main.o(.text+0xeb4):C:/d/dev/test/qtpgtest/main.cpp:40: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'
    debug/main.o(.text+0xfb7):C:/d/dev/test/qtpgtest/main.cpp:40: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'
    Une idée??

    Merci d'avance les amis pour toute aide!

  2. #2
    Membre actif Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Points : 273
    Points
    273
    Par défaut
    On avance ! Je vois que le #include <QtSql/QSqlDatabase>
    fonctionne

    les erreurs suivantes montrent que ton editeur de lien ne trouve pas la lib, ou alors, mais c'est plus rare, qu'il ne trouve pas les fonctions. Genre un problème de version. Vérifies tes lien de LIBS.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par cayou66 Voir le message
    On avance ! Je vois que le #include <QtSql/QSqlDatabase>
    fonctionne

    les erreurs suivantes montrent que ton editeur de lien ne trouve pas la lib, ou alors, mais c'est plus rare, qu'il ne trouve pas les fonctions. Genre un problème de version. Vérifies tes lien de LIBS.
    en fait ce qui a changé les erreurs c'est le path C:/d/dev/qt/451/include/QtSql/ que j'ai rajouté à l'includepath du .pro

    Comment je fait pour vérifier les liens des LIBS ??

  4. #4
    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
    Tu peux nous montrer ton .pro stp. Je suppose que c'est un problème de link, ou de librairie inaccessible (genre QSql4).

    Tu utilises quel IDE ? QtCreator ou autre chose ?

    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/

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    le .pro est ci haut dans mon 1er post dans ce sujet

    C'est vrai que j'écri mon code sur QtCreator mais c'est just comme un éditeur pour moi car je compile à la ligne de commande de qtcommandeprompt comme ça j'évite les problème de compatibilité entre l'IDE et Qt. je fait:
    cd chemin_du_répertoire_de_mon_projet
    qmake
    mingw32-make

  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
    Je ne sais pas si la casse est importante, mais dans la doc, ils mettent "QT += sql", et non "Qt += sql". Ca peut etre aussi bête que ça (sans conviction).

    Sinon, tu peux toujours ajouter :
    Ou copie la dll et le lib dans ton repertoire de compilation.

    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Je ne sais pas si la casse est importante, mais dans la doc, ils mettent "QT += sql", et non "Qt += sql". Ca peut etre aussi bête que ça (sans conviction).

    Ou copie la dll et le lib dans ton repertoire de compilation.

    G.
    Tu avais raison pour le respect de la casse dans le .pro
    merci, j'avais pas pensé à ça!

    Bon, la bonne nouvelle c'est que ça compile..
    La mauvaise nouvelle c'est que la connexion ne s'effectue pas avec la BD et le driver QPSQL apprement il est pas reconnu puisque mon programme de test retourne le message:

    Unable to connect QPSQL is not available

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

Discussions similaires

  1. Compiler un petit programme avec plusieurs fichiers avec g++
    Par Ourcoulouncoulou dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 16/12/2008, 13h48
  2. Réponses: 4
    Dernier message: 13/10/2007, 15h18
  3. compilation de programme avec gtk+
    Par adoumaz dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 31/08/2007, 19h22
  4. Compiler un programme avec API Glut
    Par Haage dans le forum GLUT
    Réponses: 5
    Dernier message: 21/07/2007, 11h42
  5. Compiler un programme avec winapi.h
    Par mannostab dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2006, 22h06

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