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

Windows Discussion :

[DLL] Dans le path?


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 70
    Points : 49
    Points
    49
    Par défaut [DLL] Dans le path?
    Bonjour à tous & à toutes,

    Je ne suis pas très expérimenté dans la prog sous Windows et je voulais une petite précision sur l'utilisation des Dll.

    J'ai toujours cru que pour fonctionné une Dll devait se trouvé dans un répertoire du Path, mais j'ai découvert recemment qu'une Dll était enregistrée dans la base de registre et qu'un programme souhaitant utilisé une Dll recherchait son emplacement dans la base (plus quelques considérations sur les GUID CLSID que je n'ai pas saisi mais qui semble garantire l'unicité du composant).
    Une fois le chemin d'accès à la Dll retrouvé sur l'hôte, il me paraît inutile que cette dernière se situe dans le Path.

    Je vous demande donc confirmation
    Voilà.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Confirmation
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    J'ai toujours cru que pour fonctionné une Dll devait se trouvé dans un répertoire du Path
    Elle doit se trouver soit dans:

    • le répertoire de l'exécutable
    • le répertoire courant
    • le répertoire system
    • le répertoire Windows
    • %PATH%

    mais j'ai découvert recemment qu'une Dll était enregistrée dans la base de registre et qu'un programme souhaitant utilisé une Dll recherchait son emplacement dans la base
    Seulement avec les DLL COM, sans doute.
    L'itération est humaine; la récursion, divine.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Je confirme ce que dit Mayti4 : Seules les DLLs COM sont retrouvéesà partir des GUIDs.

    Lorsqu'une application appelle CoCreateInstance(), Windows regarde dans la base de registre le CLSID demandé. S'il le trouve, il charge la DLL correspondante et appelle une fonction standard de cette DLL (DllGetClassObject()).

    Par contre, pour des fonctions normales, comme un programme qui charge une bibliothèque au démarrage ou qui fait un LoadLibrary tout bête, les chemins des objets COM ne sont pas utilisés.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    On peut faire un LoadLibrary en indiquant le chemin complet de la Dll.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Avant toute chose merci pour vos réponses.

    Ce ne seraient donc que les DLL COM qui aurait ce fonctionnement.
    Pour les autres DLL la présence dans le PATH suffit.

    Une dernière question.
    Elle concerne les types de données d'une DLL. Sachant qu'elles sont multilangage je me demande comment est appellée une fonction contenu dans une DLL.
    Par exemple le cas d'une fonction crée en C ainsi appelée depuis Visual basic ou Delphi. Sachant que les types n'ont pas la même taille ni le même codage (nombres négatifs) selon les langages comment cela fonctionne-t-il? (et je ne parle pas des floats)

    Merci

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Vraiment personne pour me répondre?

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Eh bien, en VB, la fonction est déclarée comme faisant partie d'une DLL, donc sous Win32, VB sait que tous les paramètres (sauf __int64 et double) font 32bits, etc. : L'interface est incluse dans le langage (En .Net, c'est plus facile encore, puisque tout est en Microsoft Intermediate Language (MSIL)).
    Sous Win64, pareil, sauf que les pointeurs/size_t/INT_PTR font 64bits, etc.

    Pour Delphi, aucune idée.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Sigar - java.library.path : sigar-amd64-winnt.dll dans le path mais inconnue
    Par Java Temptation dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 04/12/2014, 11h11
  2. Réponses: 1
    Dernier message: 17/10/2006, 10h30
  3. Réponses: 13
    Dernier message: 26/08/2005, 17h34
  4. [JAR][DLL][path] inclure des DLLs dans un jar
    Par blaz dans le forum Général Java
    Réponses: 5
    Dernier message: 28/07/2005, 13h29
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 15h52

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