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

Web & réseau Delphi Discussion :

Problème de chargement de DLL SSL


Sujet :

Web & réseau Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut Problème de chargement de DLL SSL
    Je suis confronté à un problème étrange avec SSL.
    Un de mes programmes déclenche une erreur systématique sur les postes de mes collègues mais pas sur le mien.
    Il s'agit d'un logiciel qui génère un PDF et l'envoie sur un site WEB en https avec le composant TIdHTTP.
    Au déclenchement de l'envoi, les autres postes reçoivent le message:
    "Impossible de charger la bibliothèque SSL"
    Ils ont pourtant les mêmes fichiers que moi au même endroit sur leur poste.
    Sur mon poste, aucun problème !

    La chose étrange c'est que j'ai tenté re renommer les dll dans la répertoire où se trouve l'exe et ça fonctionne quand même. Ce qui me parait normal vu que de versions des dll concernées, j'en ai plusieurs sur mon poste et que Windows doit forcément en trouver une dans les différents chemins possibles.

    Maintenant, la question est : pourquoi 2 installations identiques sur 2 postes différents ne fonctionnent pas de la même manière. Sur mon poste, aucune erreur, sur les autres (testés sur 3 différents), erreur.
    Pourquoi mon programme ne peut pas charger ces dll alors qu'elles sont sous son nez (même répertoire).

    Pour essayer de comprendre, j'ai demandé au collègue de donner tous les droits à tout le monde sur le dossier et même de lancer le programme en mode administrateur, cela ne change rien.

    La seule différence entre eux et moi c'est que mon poste "Delphi" est encore sous Windows 8.1 et eux sont en W10. Est-ce que ça pourrait venir de là ?

    Toute idée sera bonne à prendre parce que là je ne sais plus trop quoi faire pour débloquer la situation :-(

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Essaye de forcer IdOpenSSLSetLibPath avant l'appel à LoadOpenSSLLibrary (normalement c'est uniquement à partir du moment où un objet qui requiert le SSL en a besoin) lors de la création d'un TIdSSLContext par le TIdSSLIOHandlerSocketOpenSSL (une fois la connexion TCP IP ouverte, cela utilise la DLL pour le Hanshake et c'est là que se produit l'exception)

    Je me suis greffer sur IdSSLOpenSSLHeaders.GetCryptLibHandle pour utiliser PEM_read_bio_PUBKEY qui n'était pas déclaré dans ma version de Indy




    Pour ton exe, vérifie le dossier de démarrage si cela utilise un raccourci, cela peut influencer les chemins relatifs, en général, je préfère toujours utiliser explicitement Application.ExeName pour localiser le dossier de l'exe que me baser sur le CurrentDir.

    Tous les developpeurs compilent sur la même architecture ? 32 vs 64 ?
    DPROJ identique (les variables d'environnement bien utile pour partager le même DPROJ mais des chemins différents sur chaque poste)
    En débogage, Delphi est tout de même assez intrusif en particulier pour l'environnement hérité (il est 32 bits encore le IDE ?)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    J'ai testé, toujours le même problème. C'est à n'y rien comprendre.
    J'ai même fait un simple bout de code de test dans une appli autonome, ça fonctionne chez moi et pas chez les autres.
    Pour la différence entre Windows 8 et 10, j'ai essayé le même programme de test sur mon poste à la maison. Ça fonctionne mais la même chose bloque toujours chez les autres.
    J'ai pensé à un effet de l'antivirus mais on a le même.
    Comme tout le monde, j'ai souvent été confronté à des casse-têtes mais celui-là il est assez gratiné :-(

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    tu oublies aussi le 32/64 bits ce qui complexifie un peu plus le problème
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Tous les postes sont en 64.
    Les dll sont bien les bonnes versions et le code est bien la version 32 bits générée par Delphi.
    Et niveau code, je peux difficilement faire plus court pour tester.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        IdOpenSSLSetLibPath(TPath.GetDirectoryName(Application.ExeName));
        if LoadOpenSSLLibrary then
           ShowMessage('Librairies SSL chargées')
        else
          raise Exception.Create('Les librairies SSL ne peuvent être chargées');
    Au moins en faisant ça, ça m'a permit de voir que le programme complet n'est pas en cause.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 038
    Points : 40 943
    Points
    40 943
    Billets dans le blog
    62
    Par défaut
    Et, puisque les programmes sont en 32 bits, les Dlls sont bien en 32 bits ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Nom : 2022-12-07_133747.jpg
Affichages : 643
Taille : 46,5 Ko

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Nom : 2022-12-07_133747.jpg
Affichages : 643
Taille : 46,5 Ko
    on ne voit pas si elle est 32 ou 64 bits là dessus, j'utilise CCF Explorer pour ça
    Nom : Presse-papiers-1.png
Affichages : 426
Taille : 14,9 Ko
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Nom : libeay.jpg
Affichages : 433
Taille : 45,5 Ko

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    J'ai récupéré l'erreur avec GetLastError. Voilà le résultat pour chaque DLL :

    Erreur : 0 (renvoyé par SafeLoadLibrary)
    Code erreur Windows: 126
    Message erreur Windows: Le module spécifié est introuvable

    Erreur : 0 (renvoyé par SafeLoadLibrary)
    Code erreur Windows: 126
    Message erreur Windows: Le module spécifié est introuvable

  11. #11
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Points : 352
    Points
    352
    Par défaut Voir du coté des chemins de recherches
    Bonjour,

    De mon coté j'utilise Process Monitor (progmon) pour pister le chargement des DLL.
    L'ordre de recherches et paths peuvent te donner des pistes

    https://learn.microsoft.com/en-us/sysinternals/downloads/procmon


    Pascal

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Application.ExeName renvoie le bon chemin ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  13. #13
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Les chemins sont bons, ça a été vérifié.

    Par contre, en regardant avec CCF explorer (Merci Paul), je vois certaines dépendances de DLL qui se trouvent sur mon poste et sans doute sur ceux de mes collègues.
    Comme j'ai dû installer plusieurs versions de "Visual C++ Redistributable for Visual Studio" au bureau et chez moi, ce que les autre n'ont sans doute pas fait.

    Exemple: C:\WINDOWS\SysWOW64\MSVCR100.dll

    Si une des dll indiquées dans "Dependency Walker" de CCF sont manquantes, le problème pourrait-il venir de là ?

    Mon collègue vient de me dire qu'il n'a pas cette dll

  14. #14
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut Alleluia ....
    C'était bien ça ! J'ai fait rajouter msvcr100.dll à côté des dll OpenSSL et ça fonctionne.

    Oufffffffff ...........

    Merci tout de même à vous tous et à CCF Explorer :-)

  15. #15
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Télécharge cette de https://indy.fulgan.com/SSL/
    Normalement, la dépendance n'est pas nécessaire, du moins pour les récentes ...1.0.2q
    la 1.0.1m 32bits

    Cette dépendance n'est pas normal, ça doit être une version foireuse !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  16. #16
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Effectivement, la 1.0.2u n'affiche pas de dépendances à la dll en question.
    Je vais pouvoir éviter de diffuser une dll microsoft dans mon setup.
    Merci

  17. #17
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Télécharge cette de https://indy.fulgan.com/SSL/
    Normalement, la dépendance n'est pas nécessaire, du moins pour les récentes ...1.0.2q
    la 1.0.1m 32bits

    Cette dépendance n'est pas normal, ça doit être une version foireuse !
    Tout va bien avec la version "u" !

    Mais sur le site, seule une lettre différencie les mêmes versions1.0.2.
    Saurais-tu à quoi correspondent ces lettres étant donné que chaque archive a la même date ?

  18. #18
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    faut le voir comme un numéro 1.0.2.21

    m = 13
    q = 17
    u = 21
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. [XL-2010] Version 64 bit - Problème de chargement de DLL
    Par ArnaudEIC dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/09/2010, 14h26
  2. Problème de chargement de dll
    Par nasbe dans le forum WinDev
    Réponses: 2
    Dernier message: 09/01/2009, 17h32
  3. Problème de Chargement de DLL
    Par coax81 dans le forum Langage
    Réponses: 7
    Dernier message: 14/10/2008, 18h13
  4. JNI - Problème de chargement de DLL
    Par indepthsight dans le forum C++
    Réponses: 1
    Dernier message: 30/11/2007, 10h19
  5. [JNI] Encore un problème de chargement de dll
    Par seiryujay dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 10/08/2006, 13h23

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