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

Langage Delphi Discussion :

[DLL] Chargement / dechargement


Sujet :

Langage Delphi

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut [DLL] Chargement / dechargement
    Je souhaiterais avoir 2 ou 3 informations complementaires :

    Quand on declare une methode issue d'une Dll Statique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function GetPlugin : IPlugin; StdCall; External 'plug.dll', name 'GetPlugin';
    J'ai remarqué que la Dll est chargée lors du premier appel a la fonction (ou a une des fonctions liée statiquement) par affichage d'un code dans la section Begin.

    J'aimerais savoir quand elle est decjarché ? a la fn de l'applciation ?
    Peut on la decharger manuellement ?
    Comment peut on detecter le dechargement pour effectuer du code de liberation (j'ai tester ExitProc mais pas tres concluant et visiblement deconseillé ...)

    Voila pour commencer
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Euh j'ai un doute !
    Je suis à peu près sûr que les DLLs statiques sont chargées au démarrage de l'application, et déchargées à la fin de celle-ci.

    Mais là subitement le doute s'immisce


    [edit]
    Citation Envoyé par Aide Delphi7
    Chargement statique

    La manière la plus simple d'importer une procédure ou une fonction est de la déclarer en utilisant la directive external
    . Par exemple :

    Sous Windows :

    procedure FaireQuelquechose; external 'MALIB.DLL';

    Sous Linux :

    procedure FaireQuelquechose; external 'malib.so';

    Si vous incluez cette déclaration dans un programme, MALIB.DLL (sous Windows) ou malib.so (sous Linux) est chargée au moment du démarrage du programme. Durant toute l'exécution du programme, l'identificateur FaireQuelquechose désigne toujours le même point d'entrée dans la même bibliothèque partagée.
    J'ai moins de doute

    @+ Claudius

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    il me semblais aussi .... mais visiblement elles ne se chargent que lors du premier appel.

    A moins que ca ne soit le code du bloc principal "begin/end" qui ne s'execute pas au chargement de la Dll
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Je viens d'effectuer un test et je confirme mes dires: la DLL ou les DLLs sont bien chargées au démarrage de l'application.

    Vérifié en affichant les modules chargées juste au démarrage de l'application (Ctrl-Alt-M), avant même de solliciter une DLL.

    Pour le déchargement je n'ai pas fait de test, mais c'est très certainement à la fermeture de l'appli, ce qui reste logique.

    @+ Claudius

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Ouaip .. j'ai reflechi un peu de mon cote et en fait j'en suis arrivé a la meme conclusion.

    C'est jsute que si je n'appelle pas ma fonction ... ya aucune raison que le compilo charge la Dll
    Et vu que cette fonction est executé des le lancement de mon application ....

    Les autres questions restent ouvertes
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Clorish Voir le message
    Les autres questions restent ouvertes
    Une question au passage:
    Pourquoi tu ne charges pas ta DLL dynamiquement ?

    Tu gardes ainsi le contrôle du Chargement/Déchargement et autres traitements liés.

    @+

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Tu gardes ainsi le contrôle du Chargement/Déchargement et autres
    Parce que ca me fait Ch....

    Non en fait ca peut tres bien se passer avec le chargement statique, vu que dans 90% des cas le module est active durant toute l'application.

    Par contre j'aimerias detecter le dechargement de la Dll pour fermer propremetn les initialisation qui ont ete faite lors du chargement.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Dans le cas de chargement statique, je suppose qu'il doit y avoir un appel implicite à LoadLibrary/FreeLibrary, donc peut-être un début de piste ici avec DLL_PROCESS_DETACH.

    @+

  9. #9
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Plutot assez obscure

    Je ne vois rien qui concerne le placement de code a executer au dechargement de la Dll
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  10. #10
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Pour ce que j'en sais, tu peux utiliser les codes de finalisation des unités de ta DLL. Mais je n'ai pas fait le test explicitement : je sais que c'est vrai pour les paquets, je n'ai pas de certitude concernant les DLL.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

Discussions similaires

  1. Dll : Chargement images - [high skilled :D]
    Par Djang0 dans le forum C++Builder
    Réponses: 1
    Dernier message: 19/08/2009, 14h42
  2. DLL se decharge automatiquement
    Par ddrmax dans le forum C++Builder
    Réponses: 1
    Dernier message: 17/12/2008, 10h55
  3. Réponses: 5
    Dernier message: 07/04/2008, 17h40
  4. [C] Problème de dll (chargement)
    Par nikolas13 dans le forum Windows
    Réponses: 11
    Dernier message: 16/11/2006, 18h18
  5. [Dll] Chargement dynamique a base d'index
    Par Clorish dans le forum Langage
    Réponses: 20
    Dernier message: 25/03/2005, 14h19

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