Qual é o equivalente ao ldd do Linux no Windows?

Respostas:

53

Aqui está o Dependency Walker.

http://dependencywalker.com/

Daniel A. White
fonte
5
existe algo como o ldd, apenas para linha de comando? Procurando algo que eu possa usar em um prompt. Prefira um comando pequeno leve, de preferência sem DLLs extras.
JM Becker,
2
Parece que tem uma interface de linha de comando: dependencywalker.com/help/html/hidr_command_line_help.htm
Daniel A. White,
3
A sintaxe é semelhante a esta: Depends.exe / c /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst
3
Dependency Walker funciona bem, mas é uma mudança chocante em relação à simplicidade do ldd (especialmente se você está acostumado a criar scripts de uma ferramenta, consumir sua saída e, digamos, empacotar tarefas automaticamente com ela).
zxq9
2
Falhas no Windows 10.
mikemaccana
42

O dumpbincomando pode ser útil para muitas coisas, embora neste caso o dependency walker seja provavelmente um pouco mais prolixo.

dumpbin /dependents some.dll

Saída de exemplo:

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

Despejo do arquivo StanPolicy.dll

Tipo de arquivo: DLL

A imagem tem as seguintes dependências:

mscoree.dll

Resumo

    2000 .reloc
    2000 .rsrc
   1E000 .text
David St Denis
fonte
5
Esta é a melhor opção se você tiver o Visual Studio instalado.
sakra
36

ou a ferramenta GNU:

i586-mingw32msvc-objdump -p  *.exe    | grep 'DLL Name:'
RzR
fonte
1
O objdump pode ser usado para exibir o caminho completo? Eu preciso de algo recursivamente e isso requer o caminho completo para cada DLL dependente
INS de
3
objdump mostra apenas o que o arquivo contém. Ele não tenta fazer nenhuma pesquisa de caminho como lddfaz.
jørgensen
26

PowerShell pode fazer isso

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

   Tamanho (K) Nome do Módulo
   ------- ----------
       908 calc.exe
      1700 ntdll.dll
      1148 kernel32.dll
       432 KERNELBASE.dll
     13856 SHELL32.dll
           ...
Steven Penny
fonte
6
Isso parece funcionar apenas na medida em que o programa realmente encontra dlls - em caso de falha, a lista está incompleta.
01d55
12

Se você estiver usando wineo Windows e não o real, pode usar WINEDEBUG=+loaddll wine <program>.

Janus Troelsen
fonte
7
Desenvolver contra o Wine para o Windows me pareceu uma ideia tão estranha que tive que tentar (meu foco principal é o Linux) ... e na verdade está funcionando muito mais suavemente do que eu esperava para a prototipagem. Muito, muito legal.
zxq9
Re: desenvolvimento usando Wine em vez de Windows: observe que o que funciona no Wine não funcionará necessariamente no Windows real. Aprendi isso quando esqueci de ligar GdiplusStartup, e GDI + funcionou sem problemas no Wine, enquanto no Windows não funcionou. Só percebi esse erro depois de ter depurado o programa no Wine, tentando em seguida executá-lo no Windows.
Ruslan
8

Agora existe um lddno Cygwin. Se você tiver uma versão muito antiga do Cygwin, terá que usar cygcheck.

Janus Troelsen
fonte
Sim, mas não é muito preciso
Stef
8

Acho que a maneira do Windows Developer de fazer isso é usando dumpbin /dependents source.exe. Se você tiver Visual Studio instalado, você pode encontrá-lo aqui: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe.

JohnnyFromBF
fonte
3
Pena que isso não mostra onde os dependentes são encontrados para que você possa ver precisamente quais são realmente usados ​​no tempo de execução :(.
rubenvb
@rubenvb Process Explorer da suíte SysInternals MS tem uma visão de painel inferior de todas as DLLs que um binário carrega, incluindo seus caminhos e pesquisa de símbolo / dll.
kevinf
7

Versões mais recentes do Git no Windows vêm com algo chamado Git BASH , que emula muitos comandos Unix úteis, incluindo ldd.

Parece que ele relata apenas as bibliotecas que podem ser encontradas. Portanto, você pode usar isso para obter uma visão geral de onde as bibliotecas usadas estão localizadas, mas não quais estão ausentes.

Machta
fonte
0

Para o Windows 10, com o Visual Studio 2017, vou na barra de pesquisa do Windows e digito:

"Prompt de comando do desenvolvedor para VS 2017" (um cmd.exe especial para desenvolvedor Visual Studio)

Isso permite obter acesso ao DUMPBIN que deve ser usado com a tag \ IMPORTS. Por exemplo, no diretório correto:

DUMPBIN \ IMPORTS yourfile.exe (outras extensões também podem funcionar)

Para mim, esta lista a DLL e as funções utilizadas.

Alternativamente, você pode usar a tag \ ALL que é muito mais detalhada.

veja a explicação da microsoft de DUMPBIN:

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

Exemplo (com apenas uma parte) do conteúdo enviado de volta pelo comando

Via_fx_24
fonte