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

Lazarus Pascal Discussion :

Connexion Lazarus PostgreSQL (libpq.dll) [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 58
    Points : 40
    Points
    40
    Par défaut Connexion Lazarus PostgreSQL (libpq.dll)
    Bonjour à toutes et à tous.
    Le système d'exploitation est Windows 10 Famille. Je viens d'installer Lazarus 2.0.6 et PostgreSQL 12 (à partir du site EDB). Cette installation de PostgreSQL s'est accompagnée de celle de pgAdmin 4 4.13. J'ai testé le fonctionnement de pgAdmin. Tout fonctionne bien, création d'une base de données, de domaines, de tables, y compris le parcours de ces tables ce qui n'était pas le cas avec une installation à partir de WAPP. Je pouvais tout faire sauf parcourir les tables avec le message Could not send data to server, socket not connected.
    Au moment de créer une application avec Lazarus, interrogeant une base de données, apparaît le message suivant :
    Can not load PostgreSQL client library "libpq.dll".
    Check your installation.

    Ayant eu ce soucis il y a quelques années, j'ai effectué un certain nombre d'actions qui avaient fini par aboutir :
    1. J'ai cherché dans le répertoire C:\Programmes\PostgreSQL\12\bin la présence de libpq.dll. J'ai utilisé "Dependency Walker" pour déterminer de quelles .dll avait besoin libpq.dll (libssl-1_1-x64.dll, libcrypto-1_1-x64.dll, libintl-8.dll)et si elles étaient codées en 64 bit et c'est le cas. Par contre il y avait des erreurs correspondant à des API-MS-WIN-CORE. Cf. le fichier image.
    2. J'ai modifié le "Path" de Windows en insérant "C:\Programmes\PostgreSQL\12\bin". Redémarrage, Pas mieux.
    3. J'ai remarqué que dans le "Path" ce n'était pas "Programmes" mais "Program Files" qui est utilisé. Modification. Redémarrage, mais pas mieux.
    4. J'ai testé avec "Dependency Walker" le fichier libpq.dll du répertoire "C:\Programmes\PostgreSQL\12\pgAdmin4\bin". Il va bien chercher deux fichiers du point 1 dans "C:\windows\system32" sauf libintl-8.dll qu'il trouve dans son répertoire.
    5. J'ai recopié les quatre fichiers .dll dans le répertoire C:\lazarus, où se trouve lazarus.exe. Redémarrage, pas mieux.
    6. J'ai recopié les quatre fichiers .dll dans le répertoire C:\lazarus\Projets\Rucher où se trouve l'exécutable de l'application. Redémarrage, pas mieux.

    Je ne sais plus quoi faire à part tout réinstaller en 64 bits avec WAPP avec phppgadmin fonctionnel au lieu de pgadmin. Si quelqu'un a eu ce problème et l'a solutionné, je le remercie d'avance pour son aide.
    Miflon.
    Image
    Nom : DependencyWalker.jpg
Affichages : 83
Taille : 165,3 Ko
    Images attachées Images attachées  

  2. #2
    Membre expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 163
    Points : 3 034
    Points
    3 034
    Billets dans le blog
    2
    Par défaut
    Salut quelle bibliothèque utilises tu pour la connexion à PostgreSQL ?
    Le problème vient surement du nom de fichier déclaré dans l'unité qui charge dynamiquement la DLL.

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Membre expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 163
    Points : 3 034
    Points
    3 034
    Billets dans le blog
    2
    Par défaut
    Après une recherche rapide sur le forum anglais un des membres suggère qu'il faut 5 DLLs. Donc hors "libpq.dll" les autres bibliothèques ont-elles également d'autres dépendances ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     you need the following 5 dll files,
    libeay32.dll, libiconv-2.dll,libintl-8.dll,libpq.dll and ssleay32.dll.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  4. #4
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Merci BeanzMaster pour tes renseignements.
    J'utilise SQLDB, livré avec Lazarus.
    J'ai résolu le problème en virant toutes les dll livrées avec PostgreSQL 12 et que j'avais copiées dans "windows\system32" y compris libpq.dll. J'avais pris la précaution de renommer l'ancienne libpq.dll en libpq32.dll. Je lui ai redonné son nom originel et tout fonctionne correctement après avoir installé les quatre librairies libeay32.dll, libiconv-2.dll ,libintl-8.dll et ssleay32.dll dans "windows\system32".
    Commentaire : cela ne fonctionne pas avec le libpq.dll de PostgreSQL 12!
    Encore merci BeanzMaster. Je marque le sujet comme résolu.

  5. #5
    Membre expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 163
    Points : 3 034
    Points
    3 034
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Miflon Voir le message
    Merci BeanzMaster pour tes renseignements.
    J'utilise SQLDB, livré avec Lazarus.
    J'ai résolu le problème en virant toutes les dll livrées avec PostgreSQL 12 et que j'avais copiées dans "windows\system32" y compris libpq.dll. J'avais pris la précaution de renommer l'ancienne libpq.dll en libpq32.dll. Je lui ai redonné son nom originel et tout fonctionne correctement après avoir installé les quatre librairies libeay32.dll, libiconv-2.dll ,libintl-8.dll et ssleay32.dll dans "windows\system32".
    Attention avec Windows (64bits) le dossier System32 contient les bibliothèques 64 bits. Pour les 32 bits c'est dans le dossier WOW64 qu'il faut les placer (je sais ce n'ai pas logique, du crosoft tout craché) WOW signifie Windows on Windows

    Citation Envoyé par Miflon Voir le message
    Commentaire : cela ne fonctionne pas avec le libpq.dll de PostgreSQL 12!
    Encore merci BeanzMaster. Je marque le sujet comme résolu.
    Donc d'après ce que tu dis il semblerai que "libpq.dll de PostgreSQL 12!" soit bel et bien une bibliothèque 64bit. Ton ancien DLL est donc en 32bit ainsi que "libeay32.dll, libiconv-2.dll ,libintl-8.dll et ssleay32.dll". En installant les versions 64bits de celles-ci cela devrait également résoudre le problème avec "le libpq.dll de PostgreSQL 12"

    Donc à faire attention lors de la compilation que tout fonctionne correctement. La meilleur façon de tester est de placer les Dlls dans le dossier de l'exécutable de l'application. De plus si tu dois fournir ton logiciel à une tierce personne c'est plus simple de mettre les Dlls avec

    PS : J'ai également lu que la bibliothèque ZLib doit (peut-être) également être présente.

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  6. #6
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Attention avec Windows (64bits) le dossier System32 contient les bibliothèques 64 bits. Pour les 32 bits c'est dans le dossier WOW64 qu'il faut les placer (je sais ce n'ai pas logique, du crosoft tout craché) WOW signifie Windows on Windows
    Dans les recherches que j'avais effectuées, je l'avais vu.

    Donc d'après ce que tu dis il semblerai que "libpq.dll de PostgreSQL 12!" soit bel et bien une bibliothèque 64bit. Ton ancien DLL est donc en 32bit ainsi que "libeay32.dll, libiconv-2.dll ,libintl-8.dll et ssleay32.dll". En installant les versions 64bits de celles-ci cela devrait également résoudre le problème avec "le libpq.dll de PostgreSQL 12".
    D'après Dependency Walker, j'ai vu que l'ancien libpq.sql est en 64 bits (!!!) ainsi que les autres bibliothèques libeay32.dll, libiconv-2.dll ,libintl-8.dll et ssleay32.dll. Je ne sais pas quel crédit accorder à ce "Marcheur des Dépendances".

    Donc à faire attention lors de la compilation que tout fonctionne correctement. La meilleur façon de tester est de placer les Dlls dans le dossier de l'exécutable de l'application. De plus si tu dois fournir ton logiciel à une tierce personne c'est plus simple de mettre les Dlls avec
    Je ne suis qu'en phase de développement, pour l'instant. Je verrai cela plus tard. Merci du conseil. Je suis obligé de concevoir certains composants et cela va me prendre un certain temps.

    PS : J'ai également lu que la bibliothèque ZLib doit (peut-être) également être présente.
    Zlib1.dll est présent dans les dll de PostgreSQL. C'est une librairie en 64 bits qui utilise kernell32.dll (ntdll.dll, kernellbase.dll, api-ms-xin-core-vipers_l2-1-1.dll), vcruntime140.dll, toutes librairies également en 64 bits (!!!).

  7. #7
    Membre expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 163
    Points : 3 034
    Points
    3 034
    Billets dans le blog
    2
    Par défaut
    Salut
    Citation Envoyé par Miflon Voir le message
    D'après Dependency Walker, j'ai vu que l'ancien libpq.sql est en 64 bits (!!!) ainsi que les autres bibliothèques libeay32.dll, libiconv-2.dll ,libintl-8.dll et ssleay32.dll. Je ne sais pas quel crédit accorder à ce "Marcheur des Dépendances".
    Je pense que tu peux t'y fier. Le 32 ne signiferai donc pas le nombre de bit mais peut-être le numéro de version
    .
    Citation Envoyé par Miflon Voir le message
    Zlib1.dll est présent dans les dll de PostgreSQL. C'est une librairie en 64 bits qui utilise kernell32.dll (ntdll.dll, kernellbase.dll, api-ms-xin-core-vipers_l2-1-1.dll), vcruntime140.dll, toutes librairies également en 64 bits (!!!).

    Si la DLL de PostgreSQL 12 n'est pas pris en charge, c'est peut-être que l'ne-tête des methodes à changer. Est-ce la même version que ton ancien libpq.dll ?

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  8. #8
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Merci BeanzMaster pour le suivi du problème.
    Citation Envoyé par BeanzMaster Voir le message
    Je pense que tu peux t'y fier. Le 32 ne signiferait donc pas le nombre de bit mais peut-être le numéro de version.
    Si la DLL de PostgreSQL 12 n'est pas prise en charge, c'est peut-être que l'en-tête des méthodes a changé. Est-ce la même version que ton ancien libpq.dll?
    Je vais essayer de voir comment récupérer le numéro de version des dll.

    Bonne journée à toutes et à tous.

  9. #9
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Récupérer la version d'un fichier, cliquer avec le bouton droit de la souris sur le nom du fichier, cliquer sur propriété et aller à l'onglet Détails.
    libpq.dll actuelle 9.6.3.17128
    libpq.dll de PostgreSQL 12 12.0.0.19273
    libintl-8.dll 0.20.1.0
    libeay32.dll 1.0.2.10
    libiconv-2.dll 1.16.0.0
    ssleay32.dll 1.0.2.10
    Je ne vois pas bien quoi faire de tout ceci.
    Bonne soirée à toutes et à tous. Miflon

  10. #10
    Membre expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 163
    Points : 3 034
    Points
    3 034
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Miflon Voir le message
    Récupérer la version d'un fichier, cliquer avec le bouton droit de la souris sur le nom du fichier, cliquer sur propriété et aller à l'onglet Détails.
    libpq.dll actuelle 9.6.3.17128
    libpq.dll de PostgreSQL 12 12.0.0.19273
    libintl-8.dll 0.20.1.0
    libeay32.dll 1.0.2.10
    libiconv-2.dll 1.16.0.0
    ssleay32.dll 1.0.2.10
    Je ne vois pas bien quoi faire de tout ceci.
    Bonne soirée à toutes et à tous. Miflon
    Salut merci d'avoir pris le temps de regarder.

    Pour ce qui est de "ibpq.dll" il semblerai bien qu'il y ai eu des changements dans les en-têtes à première vue.
    Pour "libeay32.dll" et "ssleay32.dll" c'est plutot bizarre de la part des dev d'avoir mis ce "32" qui porte vraiment à confusion

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  11. #11
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Bonjour BeanzMaster.
    Comment as-tu fait pour voir les en-têtes des dll?
    Bonne journée, Miflon.

  12. #12
    Membre expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 1 163
    Points : 3 034
    Points
    3 034
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Miflon Voir le message
    Bonjour BeanzMaster.
    Comment as-tu fait pour voir les en-têtes des dll?
    Bonne journée, Miflon.
    C'est une supposition, car je ne vois pas d'autres réponse à ce sujet. Peut-être mis à part que lors d'une recherche sur le web je suis tombé sur cette discussion sur le fait qu'il faut peut-être migrer la bdd de la version 9.6 à une version supérieure.

    Sinon pour vérifier les en-tête il faut télécharger les sources des deux versions et comparer le fichier ".H". Sinon d'après ce que j'ai lu la version 12 est toujours en développement (dispo uniquement pour Mac et Win en 64 bits) et de nouvelles méthodes/propriétés pour l'optimisation ont été introduites, d’où ma supposition.

    Sinon pour vérifier les méthodes présentes dans la DLL et leurs description ( il vaut une version debug et non release). Il existe quelques logiciels sous Windows tel que PE Explorer (payant mais il y a un version d'essai de 30j. Le meilleur à mon avis), DLL Export Viewer et Dependency Walker

    A+
    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  13. #13
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    décembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : décembre 2007
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    PE Explorer n'agit que sur les fichiers 32 bits, du moins tant que la version 2.00 n'est pas sortie!
    Bonne journée, Miflon.

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

Discussions similaires

  1. [Lazarus] Connexion Lazarus Postgresql
    Par Miflon dans le forum Lazarus
    Réponses: 3
    Dernier message: 09/07/2014, 21h46
  2. Connexion a postgresql
    Par snipper dans le forum SGBD
    Réponses: 0
    Dernier message: 13/11/2007, 12h04
  3. Connexion Delphi PostgreSQL
    Par kayzer844 dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/04/2006, 19h31
  4. connexion a postgresql
    Par Melvine dans le forum PostgreSQL
    Réponses: 14
    Dernier message: 11/05/2005, 10h23
  5. connexion SAS/PostgreSQL
    Par boris_ska dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/05/2004, 09h43

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