248 votes

Comment vérifier la dépendance des DLL ?

Parfois, lorsque je réalise un petit projet, je ne suis pas assez prudent et j'ajoute accidentellement une dépendance pour une DLL dont je n'ai pas connaissance. Lorsque j'envoie ce programme à un ami ou à d'autres personnes, "il ne fonctionne pas" parce qu'il manque "une DLL". C'est bien sûr parce que le programme peut trouver la DLL sur mon système, mais pas sur le leur.

Existe-t-il un moyen d'analyser un exécutable pour détecter les dépendances DLL ou d'exécuter le programme dans un environnement "propre" sans DLL pour le tester afin d'éviter ces problèmes ? oups situations ?

308voto

JeffRSon Points 4191

dumpbin à partir des outils Visual Studio (VC \bin ) peut s'avérer utile :

dumpbin /dependents your_dll_file.dll

140voto

Luchian Grigore Points 136646

Essayer Dépendances (décembre 2019), qui est une réécriture moderne de la célèbre Dépendance Walker (dernière mise à jour en 2006)

79voto

troyane Points 2339

Je peux recommander une solution intéressante pour les fans de Linux. Après avoir exploré cette solution, je suis passé de DependencyWalker à celle-ci.

Vous pouvez utiliser votre ldd par rapport à Windows exe , dll .

Pour ce faire, vous devez installer Cygwin (installation de base, sans paquets supplémentaires requis) sur votre Windows, puis lancez simplement Cygwin Terminal . Vous pouvez maintenant exécuter vos commandes Linux préférées, y compris :

$ ldd your_dll_file.dll

UPD : Vous pouvez utiliser ldd également par terminal git bash sous Windows . Il n'est pas nécessaire d'installer cygwin si vous avez déjà installé git.

40voto

Iamsodarncool Points 324
  1. Déterminez le chemin d'accès complet à l'assemblage avec lequel vous essayez de travailler.

  2. Appuyez sur le bouton de démarrage, tapez "dev". Lancez le programme appelé "Invite de commande du développeur pour VS 2017"

  3. Dans la fenêtre qui s'ouvre, tapez dumpbin /dependents [path] donde [path] est le chemin que vous avez calculé à l'étape 1

  4. appuyer sur la touche entrée

Et voilà, vous avez obtenu vos informations sur les dépendances. La fenêtre devrait ressembler à ceci :

enter image description here

Mise à jour pour VS 2019 : vous avez besoin de ce paquet dans votre installation VS : enter image description here

14voto

Gabriel Devillers Points 621

Essayer Dépendances il est décrit comme "Un Walker de dépendances moderne et open-source".

Il dispose d'une interface graphique, mais il fonctionne également à partir de la ligne de commande avec une sortie JSON optionnelle !

Pour afficher récursivement les dépendances de mydll.dll jusqu'à une profondeur de 1 :

Dependencies.exe -chain mydll.dll -depth 1

Exemple de résultat :

   mydll.dll (ROOT) : C:/.../mydll.dll
|   USER32.dll (WellKnownDlls) : C:\WINDOWS\SysWOW64\user32.dll
|   ADVAPI32.dll (WellKnownDlls) : C:\WINDOWS\SysWOW64\advapi32.dll
|   ole32.dll (WellKnownDlls) : C:\WINDOWS\SysWOW64\ole32.dll
|   GDI32.dll (WellKnownDlls) : C:\WINDOWS\SysWOW64\gdi32.dll
|   CRYPT32.dll (WellKnownDlls) : C:\WINDOWS\SysWOW64\CRYPT32.dll
|   Secur32.dll (WindowsFolder) : C:\WINDOWS\SysWOW64\Secur32.dll
|   MSVCP140D.dll (WindowsFolder) : C:\WINDOWS\SysWOW64\MSVCP140D.dll
|   USP10.dll (WindowsFolder) : C:\WINDOWS\SysWOW64\USP10.dll
|   KERNEL32.dll (WellKnownDlls) : C:\WINDOWS\SysWOW64\kernel32.dll
|   VCRUNTIME140D.dll (WindowsFolder) : C:\WINDOWS\SysWOW64\VCRUNTIME140D.dll
|   ucrtbased.dll (WindowsFolder) : C:\WINDOWS\SysWOW64\ucrtbased.dll

Notez que la production d'un résultat peut prendre beaucoup de temps si la profondeur maximale des dépendances est importante.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X