Twitter iPhone pliant OnePlus 12 PS5 Disney+ Orange Livebox Windows 11 ChatGPT

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

2 réponses
Avatar
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

2 réponses

Avatar
Jean-Claude BELLAMY
Le lundi 05/03/2012 12:25:31, Lucas Levrel a écrit dans le message
<news: ce
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
Avatar
Lucas Levrel
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