2010-01-03 17 views

Respuesta

44

Aquí está Dependency Walker.

http://dependencywalker.com/

+3

¿Existe algo así como ldd, solo para la línea de comando? Buscando algo que pueda usar de un aviso. Prefiere un pequeño comando ligero, preferiblemente sin archivos DLL adicionales. – TechZilla

+2

Parece que tiene una interfaz de línea de comandos: http://www.dependencywalker.com/help/html/hidr_command_line_help.htm –

+3

La sintaxis se parece a esto: depends.exe/c /oc:dependencies.csv/ot: dependencies.txt mydll.dll – Boinst

19

El comando dumpbin puede ser útil para muchas cosas, aunque en este caso la dependencia Walker es probablemente un poco más detallado.

dumpbin /dependents some.dll 
+1

Esta es la mejor opción si tiene instalado Visual Studio. – sakra

24

o la herramienta GNU:

i586-mingw32msvc-objdump -p *.exe | grep 'DLL Name:' 
+0

¿Se puede usar objdump para mostrar la ruta completa? Necesito algo de forma recursiva y esto requiere una ruta completa para cada DLL dependiente – INS

+2

objdump solo muestra lo que contiene el archivo. No intenta hacer ninguna búsqueda de ruta como lo hace 'ldd'. –

6

Ahora hay una ldd en Cygwin. Si tiene una versión de Cygwin muy antigua, deberá usar cygcheck.

+0

Sí, pero no es muy exacto – Stef

8

Si está usando wine y Windows no real, puede usar WINEDEBUG=+loaddll wine <program>.

+5

Desarrollar contra el vino para apuntar a Windows me pareció una idea tan extraña que tuve que intentarlo (apunto principalmente a Linux) ... y en realidad está funcionando * mucho * más suave que Esperaba para prototipos. Muy muy genial. – zxq9

+0

Re: desarrollo usando Wine en lugar de Windows: tenga en cuenta que lo que funciona en Wine no necesariamente funcionará en Windows real. Aprendí esto cuando olvidé llamar a 'GdiplusStartup', y GDI + funcionó sin problemas en Wine, mientras que en Windows no lo hizo. Solo noté este error después de haber depurado el programa en Wine, tratando de ejecutarlo en Windows. – Ruslan

19

PowerShell puede hacer esto

 
PS > Start-Process -PassThru calc.exe | Get-Process -Module 

    Size(K) ModuleName 
    ------- ---------- 
     908 calc.exe 
     1700 ntdll.dll 
     1148 kernel32.dll 
     432 KERNELBASE.dll 
    13856 SHELL32.dll 
      ... 
+3

Parece que esto solo funciona en la medida en que el programa encuentra dlls; en caso de falla, la lista está incompleta. – 01d55

6

supongo que la forma de desarrollo de Windows de hacer esto es utilizar dumpbin /dependents source.exe. Si tiene instalado Visual Studio, puede encontrarlo aquí: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe.

+0

Lástima que esto no muestra dónde se encuentran los dependientes para que pueda ver con precisión cuáles se utilizan realmente en el tiempo de ejecución :(. – rubenvb

3

Las versiones más nuevas de Git en Windows vienen empaquetadas con algo llamado Git BASH, que emula muchos comandos Unix útiles, incluido el disco duro.

Parece que informa solo las bibliotecas que se pueden encontrar. De modo que puede usar esto para tener una idea general de dónde se encuentran las bibliotecas usadas, pero no las que faltan.

Cuestiones relacionadas