Détection des DLL utilisées par un exécutable

Le
Lucas Levrel
Bonjour,

J'ai écrit un programme utilisant GTK+ comme interface graphique. Je le
compile avec g++ « sous » MinGW. Par défaut, l'exécutable produit
est lié aux DLL de GTK+, et je dois donc les distribuer avec l'exécutable.

Mais comme je n'utilise qu'une petite partie des possibilités de GTK+,
l'exécutable n'a sans doute besoin que de quelques DLL, pas toutes. Y
a-t-il un outil qui permette de savoir lesquelles ?

Merci.
--
LL
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Claude BELLAMY
Le #24297991
Le lundi 05/03/2012 12:25:31, Lucas Levrel a écrit dans le message
qui suit :
Bonjour,

J'ai écrit un programme utilisant GTK+ comme interface graphique. Je le
compile avec g++ « sous » MinGW. Par défaut, l'exécutable produit est lié aux
DLL de GTK+, et je dois donc les distribuer avec l'exécutable.

Mais comme je n'utilise qu'une petite partie des possibilités de GTK+,
l'exécutable n'a sans doute besoin que de quelques DLL, pas toutes. Y a-t-il
un outil qui permette de savoir lesquelles ?




"Dependency Walker" est l'outil le plus classique pour cela.

http://www.dependencywalker.com/

Mais ne t'attends pas cependant à des miracles !

Tout dépend de la façon dont les DLL sont appelées!

Si elles sont appelés "statiquement", c'est à dire de façon explicite
dans le code, avec le nom de la DLL dans un fichier .def (en C) ou avec
une clause "external" (en Delphi), il n'y aura aucun problème.

Par contre, si une DLL est appelée dynamiquement, à l'aide de la
fonction "LoadLibrary" associée à la fonction "GetProcAddress", le nom
de la DLL étant alors stocké dans une variable chaîne quelconque, il
n'y a aucun moyen pour connaître a priori les DLL appelées!
Il faudra effectuer un suivi pas à pas d'exécution du logiciel.


--

May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP Expert IT Pro]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Lucas Levrel
Le #24299281
Le 5 mars 2012, Jean-Claude BELLAMY a écrit :

"Dependency Walker" est l'outil le plus classique pour cela.


(...)
Par contre, si une DLL est appelée dynamiquement, à l'aide de la fonction
"LoadLibrary" associée à la fonction "GetProcAddress", le nom de la DLL étant
alors stocké dans une variable chaîne quelconque, il n'y a aucun moyen pour
connaître a priori les DLL appelées!
Il faudra effectuer un suivi pas à pas d'exécution du logiciel.



Merci ! Je pense que ça ira, car j'utilise dès le lancement toutes les
fonctions dont je me sers aussi ultérieurement.

--
LL
Publicité
Poster une réponse
Anonyme