DYNAMIC LIBRARY LOADER CLASS: GAGNEZ DU TEMPS POUR CHARGER LES FONCTIONS DE VOS

Signaler
Messages postés
4
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
9 janvier 2012
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51158-dynamic-library-loader-class-gagnez-du-temps-pour-charger-les-fonctions-de-vos-librairies

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
33
Yo,

Pas du tout, je ne rencontre jamais de problème avec cette unité. Qu'elle version de Delphi utilise tu, quel DLL lance tu ? est-ce que ton wrapper utilise bien les bonnes convention d'appel ?

a++
Messages postés
41
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
20 octobre 2015

Bonjour,

Merci pour ta contribution. Le chargement de dll se déroule bien, par contre, j'ai eu un petit souci avec la récupération de fonctions : Le 1er appel à GetProcAddress fonctionne, mais le pointeur de la Dll (le HMODULE) devient inutilisable suite à ce 1er appel. Il n'est plus possible d'effectuer la moindre opération dessus sans déclencher une erreur. As-tu rencontré ce problème ?
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
33
La demo est éfféctivement pour D2009, il faudra placer les methodes dans un objet pour en tirer partis.

au niveau mémoire, en D2009 cela prend un chouilla de place avec la liste des fonctions chargée, rien de bien méchant si on à pas un wrapper conséquent (pas comme l'api windows complète par exemple), mais pratique pour un wrapper d'une centaines de fonctions.

au niveau charge, il est certains que les calls en plus pour appeler GetProcAddress et les vérification d'erreur ralentissent un peu le tout, mais la encore, rien de bien méchant.
Messages postés
615
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
3
Salut Foxi,

1.J’ai rapatrié les fichiers LibLoader.inc et LibLoader.pas dans le DemoLLUnit pour compiler sous D7.

2. A la compilation, l’erreur est :
« Types incompatibles :pointeur de méthode et pointeur normal »
à la ligne suivante marquée entre !!...!! :
initialization
Loader := TLibraryLoader.Create(LibUser32);
// Assign event procedure (look in LibLoader.Pas -> directive REFTO)
!!Loader.OnLibError := LoaderError;!!

3. LoaderError est une procédure. Peut-être que sous delphi2009, ça marche, mais en D7, il faut sans doute un transtypage ou autre technique pour renvoyer un pointeur sur la procédure LoaderError.
>>> Qu’en penses-tu ?

4. Pour l’instant, je ne vois qu’un éventuel avantage à ton code : une simplification d’écriture dans les unités appellantes. C’est déjà bien. Encore que je bute sur ce problème de pointeur, je n’arrive pas à compiler en D7.
>>> Au niveau mémoire ? temps d’exécution ? as-tu fais des comparatifs avec la méthode traditionnelle?

5. >>> Quel est le rôle du programme qui se limite aux instructions :
writeln('Push key for exit...');
readLn;

Voilà pour l’instant.
Tes réponses en éclaireront sans doute d’autres que moi !
Bien à toi
Afficher les 8 commentaires