2009-01-24 13 views

Respuesta

28

Hay utilidades que harán esto por usted.

En el pasado he utilizado la herramienta MS (depends.exe) que viene con (creo) VB .:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx

y hay esto también:
http://dependencywalker.com/

y probablemente otros también.

+4

El "depends.exe" que está instalado con Visual Studio/VB/... y el "depends.exe" que uno puede descargar desde http://dependencywalker.com/ son exactamente la misma herramienta (solo versiones diferentes) . ;) –

8

Dependency Walker lo puede ayudar a determinar qué .dll se cargará.

+0

Buen programa GUI. 'Dependency Walker' intenta encontrar archivos DLL y sus dependencias jerárquicas. – SuB

39

dumpbin es una herramienta que viene con VC++.

Para ver qué archivos DLL un programa importará:

  • Abra Visual Studio
  • Herramientas de elementos del menú | Comando de Visual Studio pedirá
  • cd a la carpeta que contiene ejecutable
  • dumpbin/dependientes whatever.exe
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 

Para ver qué funciones (y DLL) que importará, utilice

C:\> dumpbin /imports whatever.exe 
+2

Creo que debería ser: dumpbin/dependents whatever.exe –

+1

/dependientes solo muestra las DLL./ imports muestra las funciones * y * DLL. –

+0

Esta es la mejor respuesta. Lamentablemente, esta herramienta muestra solo archivos DLL cargados directamente para el '.exe' no DLL que el archivo ejecutable depende de ellos indirectamente. – SuB

1

Hay una práctica herramienta llamada NDepend que le dará todas las dependencias de DLL.

+0

_'NDepend' es una herramienta de análisis estático para .NET managed code'_. Por lo tanto, funciona solo para aplicaciones .Net. – SuB

10

Simplemente vaya al símbolo del sistema y escriba tasklist /m, verá la lista de archivos dll utilizados por el programa específico.

+0

Sí, esto hace lo que dice, sin embargo, si un ejecutable inicia varios procesos, nunca descubrirá desde la línea de comandos qué proceso fue iniciado por los ejecutables, por lo tanto, no sabrá todos los dll dependientes del ejecutable. – Fazi

2

Solución para Microsoft .Net:

foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies()) 
{ 
    MessageBox.Show(a.Name); 
} 
11

Abra el símbolo del sistema y escriba a continuación comandar

lista de tareas/m/fi "imagename eq netbeans.exe"

Tipo vez netbeans.exe cualquiera que sea el nombre de su nombre de archivo exe.

+0

buen consejo, aunque solo funciona para ejecutar el proceso. –

+0

usé esto y no me da una lista completa de las DLL que está usando, hay un montón de DLLs de informes de cristal que mi exe está usando pero no veo ninguno mencionado en la lista impresa a través de ese comando. ¿Algunas ideas? – user734028

Cuestiones relacionadas