Si j'ai un exécutable Windows, comment savoir quelles DLL il va charger?
Je parle juste de ceux qui seront chargés statiquement, pas ceux qu'il pourrait charger dynamiquement avec quelque chose comme LoadLibrary.
Il existe des utilitaires qui le feront pour vous.
Dans le passé, j'ai utilisé l'outil MS (depend.exe) fourni avec (je pense) VB .:
https://msdn.Microsoft.com/en-us/library/8kche8ah.aspx
et il y a aussi ceci:
http://dependencywalker.com/
et probablement d'autres aussi.
dumpbin est un outil fourni avec VC++.
Pour voir quelles DLL un programme importera:
Dump of file whatever.exe File Type: EXECUTABLE IMAGE Image has the following dependencies: AIOUSB.DLL sqlite3.dll wxmsw293u_core_vc_custom.dll wxbase293u_vc_custom.dll KERNEL32.dll ole32.dll OLEAUT32.dll MSVCP90.dll MSVCR90.dll
Pour voir quelles fonctions (et DLL) il importera, utilisez
C:\> dumpbin /imports whatever.exe
Ouvrez l'invite de commande, puis tapez la commande ci-dessous
liste des tâches/m/fi "imagename eq netbeans.exe"
Tapez plutôt netbeans.exe quel que soit le nom de votre fichier exe.
Dependency Walker peut vous aider à déterminer quel fichier .dll sera chargé.
Accédez simplement à l'invite de commande et tapez tasklist /m
, vous verrez la liste des fichiers dll utilisés par un programme spécifique.
Solution pour Microsoft .Net:
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies())
{
MessageBox.Show(a.Name);
}
progfr est simple et utile: [ http://members.fortunecity.com/michaelmoser/tip11.htm]
Il existe un outil pratique appelé NDepend qui vous donnera toutes les dépendances DLL.