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 :

Distribution d'une application avec QPSQL


Sujet :

Bases de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 17
    Points
    17
    Par défaut Distribution d'une application avec QPSQL
    Bonjour à tous,

    En fait, j'ai compilé postgresql avec MinGW, puis, j'ai compilé le driver QPSQL à partir de là.
    Lorsque je suis sur QtCreator : pas de problème, tout fonctionne nickel.
    Lorsque je lance l'exe (Release) sur la même machine, aucun problème ça fonctionne.

    Maintenant, si je déplace sur une autre machine l'exe avec les bonnes bibliothèques (vérifiées avec Dependency Walker), le programme se lance, mais lors de la connexion à ma base, je suis "gratifié" d'un "Driver not loaded"...

    Je ne sais plus trop quoi faire. Quelqu'un aurait-il une idée?

    D'avance merci.

    Pour faciliter le tout, voici le .pro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    QT += network \
        sql
    TARGET = pgsql_connexion
    TEMPLATE = app
    SOURCES += main.cpp \
        mainwindow.cpp
    HEADERS += mainwindow.h
    FORMS += mainwindow.ui
    ainsi que le contenu du dossier de la release :
    - pgsql_connexion.exe
    - libeay32.dll
    - libpq.a
    - libpq.dll
    - libqsqlpsql4.a
    - mingwm10.dll
    - qsqlpsql4.dll
    - QtCore4.dll
    - QtGui4.dll
    - QtSql4.dll
    - ssleay32.dll

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut,
    il te faut le repertoire sqldrivers à côté de ton exe. Ce repertoire contien le plugin de Postgre.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par yan Voir le message
    Salut,
    il te faut le repertoire sqldrivers à côté de ton exe. Ce repertoire contien le plugin de Postgre.
    Ce n'était pas ça, mais j'ai finalement trouvé la solution à mon premier problème à savoir QPSQL avec MinGW.


    Ce fut laborieux, mais j'ai trouvé. Quand je vois la solution, j'ai un peu honte mais bon...

    Bref je suis repartis de zéro. Voici le démarche que j'ai suivies :
    - installation de Qt et QtCreator
    - installation de PostgreSQL
    - modification du %PATH% pour insérer le c:\psql\bin et c:\psql\lib (je ne pense pas que \lib soit vraiment nécessaire, mais bon...) en partant du principe que postgresql est innstallé dans c:\psql
    - APRÈS la modif du %PATH% j'ai compilé QPSQL
    - compilation du programme ==> ça tourne...

    déploiement :
    On copie toutes les dll de c:\psql\bin dans le dossier de la "release" et on copie qsqlpsql4.dll dans "release\sqldrivers".
    On lance l'appli qui fonctionnne nickel chrome ! ! !

    Voilou, j'espère que ça pourra aider du monde...

    Cependant, il me reste un problème très similaire. Mon but est de faire une appli que je compile aussi bien sous Windows que sous Linux. Je me suis donc mis sous linux (Ubuntu 64bits) où j'ai compilé tour à tour Qt 4.5.2 puis QPSQL. Je construit l'appli sans problème et elle fonctionne parfaitement bien sur cette machine.

    Seulement une fois que je transfers l'appli sur une autre machine linux (Debian 64bits) avec les bibliothèques, j'ai encore le "Driver not loaded"... Après de nombreux essais et par énervement, j'avais remarqué que toutes les libraires venait de /lib, /usr/lib ou $QTDIR/lib. j'ai donc copié toutes les bibliothèques de ces répertoires dans le répertoire de mon appli ainsi que dans son sous répertoire sqldrivers. Une fois transférée sur l'autre machine, j'ai toujours le même résultat.

    Je pense donc que le problème vient d'autre part que d'une librairie manquante. Je suis à cours d'idée. Auriez-vous ne serait qu'une piste à suivre SVP?

    Merci d'avance.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Je pense que j'ai finalement une piste sérieuse mais je ne vois pas trop comment m'en sortir.

    Sur la machine où j'ai développé l'appli, lorsque je fais un ldd sur mon prog ou sur libqsqlpsql.so, j'ai des lien avec le qt que j'ai compilé pour développer mon appli.

    Lorsque je fais les mêmes commandes sur la machine qui reçoit l'appli, les liens se font sur les bibliothèques du système alors que les bibliothèques nécessaires se trouvent déjà dans le même répertoire... Conclusion, il y a très certainement de conflits de version de bibliothèque, mais je ne sais pas comment dire de pointer par défaut sur le bibliothèque contenues dans le répertoire de mon appli.

    pour être plus clair, sur la machine qui reçoit l'appli, si je fais :
    ldd libqsqlpsql.so, j'obtiens :
    ...
    libQtSql.so.4 => /usr/lib/libQtSql.so.4
    ...

    alors que je devrais obtenir :
    ...
    libQtSql.so.4 => /repertoire/de/mon/appli/libQtSql.so.4
    ...

    j'ai tenté un app.addLibraryPath mais rien n'y fait...

    Si quelqu'un peut m'aider, je suis preneur...

    merci d'avance

  5. #5
    Membre confirmé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Points : 646
    Points
    646
    Par défaut
    Pour spécifier à Linux des répertoires prioritaires pour la recherche de bibliothèques dynamiques, tu dois exporter dans ta console la variable LD_LIBRARY_PATH
    exemple : export LD_LIBRARY_PATH=<monRep>

    Bonne route avec PostGreSQL !
    Selso.
    Ingénieur/CdP développement systèmes embarqués &

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 26/01/2014, 00h46
  2. Réponses: 1
    Dernier message: 02/02/2012, 17h33
  3. Réponses: 3
    Dernier message: 09/01/2006, 16h35
  4. Conseils pour developper une application avec Oracle
    Par belugha dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/06/2003, 16h03
  5. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32

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