Apa yang setara dengan ldd Linux di windows?


Jawaban:


55

Inilah Dependency Walker.

http://dependencywalker.com/


6
apakah ada yang seperti ldd, hanya untuk baris perintah? Mencari sesuatu yang dapat saya gunakan dari prompt. Lebih suka perintah ringan, lebih disukai tanpa DLL tambahan.
JM Becker

2
Tampaknya yang memiliki antarmuka baris perintah: dependencywalker.com/help/html/hidr_command_line_help.htm
Daniel A. White

3
Sintaksnya terlihat seperti ini: dependent.exe / c /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst

3
Dependency Walker bekerja dengan baik, tetapi merupakan perubahan yang mencolok dari kesederhanaan ldd (terutama jika Anda terbiasa membuat skrip, sebuah alat mengkonsumsi outputnya dan melakukan, katakanlah, mengemas tugas secara otomatis dengannya).
zxq9

2
Kerusakan pada Windows 10.
mikemaccana

43

The dumpbinperintah dapat berguna untuk banyak hal, meskipun dalam kasus ini ketergantungan walker mungkin sedikit lebih verbose.

dumpbin /dependents some.dll

Contoh keluaran:

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

Buang file StanPolicy.dll

Jenis File: DLL

Gambar memiliki dependensi berikut:

mscoree.dll

Ringkasan

    2000 .reloc
    2000 .rsrc
   1E000 .text

5
Ini adalah opsi terbaik jika Anda menginstal Visual Studio.
sakra

38

atau alat GNU:

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

1
Bisakah objdump digunakan untuk menampilkan jalur lengkap? Saya memerlukan sesuatu secara rekursif dan ini memerlukan jalur penuh untuk setiap DLL yang bergantung
INS

4
objdump hanya menunjukkan isi file. Itu tidak mencoba untuk melakukan pencarian jalur seperti yang ldddilakukan.
jørgensen

27

PowerShell dapat melakukan ini

PS> Mulai-Proses -PassThru calc.exe | Dapatkan-Proses -Module

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

7
Ini tampaknya bekerja hanya sejauh program benar-benar menemukan dll - jika terjadi kegagalan, daftar tidak lengkap.
01d55

13

Jika Anda menggunakan winedan bukan Windows asli, Anda dapat menggunakan WINEDEBUG=+loaddll wine <program>.


7
Mengembangkan melawan Wine untuk menargetkan Windows menurut saya adalah ide yang sangat aneh sehingga saya harus mencobanya (saya terutama menargetkan Linux) ... dan sebenarnya ini bekerja jauh lebih lancar daripada yang saya harapkan untuk pembuatan prototipe. Sangat sangat keren.
zxq9

Re: pengembangan menggunakan Wine, bukan Windows: perhatikan bahwa apa yang berfungsi di Wine belum tentu berfungsi di Windows asli. Saya mempelajari ini ketika saya lupa menelepon GdiplusStartup, dan GDI + bekerja tanpa masalah di Wine, sementara di Windows tidak. Saya hanya melihat kesalahan ini setelah men-debug program di Wine, selanjutnya mencoba menjalankannya di Windows.
Ruslan

Saya menguji berbagai hal di Wine sepanjang waktu, hanya untuk menghindari memulai ulang dan mengubah OS. Namun, praktik yang baik sebelum rilis besar - atau setiap kali Anda melakukan sesuatu yang terasa sedikit mencurigakan - untuk mencobanya juga di Windows asli.
Michael Macha

9

Sekarang ada ldddi Cygwin. Jika Anda memiliki versi Cygwin yang sangat lama, Anda harus menggunakan cygcheck.


Ya, tapi itu tidak terlalu akurat
Stef

9

Saya kira cara Pengembang Windows untuk melakukan ini adalah dengan menggunakan dumpbin /dependents source.exe. Jika Anda memiliki Visual Studio diinstal Anda dapat menemukannya di sini: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe.


3
Sayang sekali, ini tidak menunjukkan di mana dependen ditemukan sehingga Anda dapat dengan tepat melihat mana yang benar-benar digunakan saat runtime :(.
rubenvb

@rubenvb Process Explorer dari SysInternals MS suite memiliki tampilan panel yang lebih rendah dari semua DLL yang memuat biner termasuk jalur dan pencarian simbol / dll.
kevinf

8

Versi Git yang lebih baru di Windows dikemas dengan sesuatu yang disebut Git BASH , yang mengemulasi banyak perintah Unix yang berguna termasuk ldd.

Tampaknya laporan hanya pustaka yang dapat ditemukan. Jadi Anda bisa menggunakan ini untuk mendapatkan gambaran umum tentang di mana perpustakaan bekas berada, tetapi tidak ada yang hilang.



1

Untuk windows 10, dengan visual studio 2017, saya masuk ke bilah pencarian windows dan ketik:

"Developer Command Prompt for VS 2017" (cmd.exe khusus untuk pengembang Visual studio)

Ini memungkinkan untuk mendapatkan akses ke DUMPBIN yang harus digunakan dengan tag / IMPORTS. Misalnya, di direktori yang benar:

DUMPBIN / IMPORTS yourfile.exe (ekstensi lain mungkin juga berfungsi)

Bagi saya, ini daftar DLL dan fungsi yang digunakan.

Cara lainnya, Anda dapat menggunakan tag \ ALL yang jauh lebih bertele-tele.

lihat penjelasan microsoft DUMPBIN:

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

Contoh (dengan hanya sebagian) dari konten yang dikirim kembali oleh perintah


contoh lengkapnya seperti:dumpbin /imports *.dll | find /i ".dll"
Mohammad Kanan

Tambahan yang bagus untuk jawaban lama!
Mohammad Kanan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.