Qual è l'equivalente di ldd di Linux su Windows?


Risposte:


53

Ecco Dependency Walker.

http://dependencywalker.com/


5
esiste qualcosa come ldd, solo per riga di comando? Alla ricerca di qualcosa che posso usare da un prompt. Preferisci un piccolo comando leggero, preferibilmente senza DLL aggiuntive.
JM Becker

2
Sembra che abbia un'interfaccia a riga di comando: dependencywalker.com/help/html/hidr_command_line_help.htm
Daniel A. White

3
La sintassi è simile a questa: dipende.exe / c /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst

3
Dependency Walker funziona bene, ma è un cambiamento sconcertante rispetto alla semplicità di ldd (specialmente se sei abituato a creare script per uno strumento, consuma il suo output e fai, diciamo, attività di packaging automaticamente con esso).
zxq9

2
Si blocca su Windows 10.
mikemaccana

42

Il dumpbincomando può essere utile per molte cose, anche se in questo caso il walker delle dipendenze è probabilmente un po 'più dettagliato.

dumpbin /dependents some.dll

Output di esempio:

C: \ Programmi (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Team Tools \ Static Analysis Tools> dumpbin / dependents StanPolicy.dll

Dump del file StanPolicy.dll

Tipo di file: DLL

L'immagine ha le seguenti dipendenze:

mscoree.dll

Sommario

    2000 .reloc
    2000 .rsrc
   1E000 .text

5
Questa è l'opzione migliore se hai installato Visual Studio.
sakra

36

o lo strumento GNU:

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

1
Può objdump essere utilizzato per visualizzare il percorso completo? Ho bisogno di qualcosa in modo ricorsivo e questo richiede fullpath per ogni DLL dipendente
INS

3
objdump mostra solo cosa contiene il file. Non tenta di eseguire alcuna ricerca di percorso come lddfa.
jørgensen

26

PowerShell può farlo

PS> Avvia processo -PassThru calc.exe | Get-Process -Module

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

6
Questo sembra funzionare solo nella misura in cui il programma trova effettivamente le dll - in caso di errore l'elenco è incompleto.
01d55

12

Se stai usando winee non un vero Windows, puoi usare WINEDEBUG=+loaddll wine <program>.


7
Sviluppare contro Wine per prendere di mira Windows mi è sembrata un'idea così strana che ho dovuto provarlo (principalmente come destinazione Linux) ... e in realtà sta funzionando molto più agevolmente di quanto mi aspettassi per la prototipazione. Molto, molto bello.
zxq9

Ri: sviluppo usando Wine invece di Windows: nota che ciò che funziona in Wine non funzionerà necessariamente su Windows reale. L'ho imparato quando mi sono dimenticato di chiamare GdiplusStartupe GDI + ha funzionato senza problemi in Wine, mentre su Windows no. Ho notato questo errore solo dopo aver eseguito il debug del programma in Wine, cercando successivamente di eseguirlo in Windows.
Ruslan

8

Ora c'è un lddin Cygwin. Se hai una versione di Cygwin molto vecchia, dovrai usare cygcheck.


Sì, ma non è molto preciso
Stef

8

Immagino che il modo per fare questo per gli sviluppatori di Windows sia usare dumpbin /dependents source.exe. Se si dispone di Visual Studio installata si può trovare qui: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe.


3
Peccato che questo non mostri dove si trovano i dipendenti in modo da poter vedere con precisione quali sono effettivamente utilizzati in fase di esecuzione :(.
rubenvb

@rubenvb Process Explorer della suite SysInternals MS ha una vista nel riquadro inferiore di tutte le DLL caricate da un file binario, inclusi i percorsi e la ricerca di simboli / dll.
kevinf

7

Le versioni più recenti di Git su Windows vengono fornite con qualcosa chiamato Git BASH , che emula molti utili comandi Unix incluso ldd.

Sembra che riporti solo le biblioteche che possono essere trovate. Quindi puoi usarlo per avere una panoramica di dove si trovano le librerie utilizzate, ma non quali mancano.



0

Per Windows 10, con Visual Studio 2017, vado nella barra di ricerca di Windows e digito:

"Prompt dei comandi per sviluppatori per VS 2017" (un cmd.exe speciale per gli sviluppatori di Visual Studio)

Ciò consente di accedere a DUMPBIN che dovrebbe essere utilizzato con il tag \ IMPORTS. Ad esempio, nella directory corretta:

DUMPBIN \ IMPORTS yourfile.exe (anche altre estensioni potrebbero funzionare)

Per me, questo elenca la DLL e le funzioni utilizzate.

In alternativa, puoi utilizzare il tag \ ALL che è molto più dettagliato.

vedere la spiegazione di Microsoft di DUMPBIN:

https://docs.microsoft.com/en-us/cpp/build/reference/imports-dumpbin?view=vs-2019

Esempio (con solo una parte) del contenuto restituito dal comando

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.