Linux'un ldd'sinin Windows'taki karşılığı nedir?


Yanıtlar:


55

Bağımlılık Walker burada.

http://dependencywalker.com/


6
ldd gibi bir şey var mı, sadece komut satırı için? Komut isteminden kullanabileceğim bir şey arıyorum. Küçük bir ışık komutunu tercih edin, tercihen fazladan DLL'ler olmadan.
JM Becker

2
Görünüşe göre bir komut satırı arayüzü var: dependencywalker.com/help/html/hidr_command_line_help.htm
Daniel A. White

3
Sözdizimi şuna benzer bir şeye benziyor: ports.exe / c /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst

3
Dependency Walker iyi çalışıyor, ancak ldd'nin basitliğinden farklı bir değişikliktir (özellikle komut dosyası oluşturmaya alışkınsanız, bir aracın çıktısını tüketir ve mesela onunla otomatik olarak paketleme görevleri yapar).
zxq9

2
Windows 10'da
çöküyor

43

dumpbinBu durumda bağımlılık walker daha ayrıntılı muhtemelen biraz olmasına rağmen komut, pek çok şey için yararlı olabilir.

dumpbin /dependents some.dll

Örnek çıktı:

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

StanPolicy.dll dosya dökümü

Dosya Türü: DLL

Görüntü aşağıdaki bağımlılıklara sahiptir:

mscoree.dll

Özet

    2000 .reloc
    2000 .rsrc
   1E000 .text

5
Visual Studio yüklüyseniz en iyi seçenek budur.
sakra

38

veya GNU aracı:

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

1
Objdump tam yolu görüntülemek için kullanılabilir mi? Yinelemeli bir şeye ihtiyacım var ve bu her bağımlı DLL için tam yol gerektiriyor
INS

4
objdump sadece dosyanın ne içerdiğini gösterir. Yaptığı gibi herhangi bir yol araması yapmaya lddçalışmaz.
jørgensen

27

PowerShell bunu yapabilir

PS> İşlemi Başlat -PassThru calc.exe | Get-Process -Module

   Boyut (K) Modül Adı
   ------- ----------
       908 calc.exe
      1700 ntdll.dll
      1148 kernel32.dll
       432 KERNELBASE.dll
     13856 SHELL32.dll
           ...

7
Bu, yalnızca program dll'leri bulduğu sürece işe yarıyor gibi görünüyor - başarısızlık durumunda liste eksik.
01d55

13

wineGerçek Windows kullanıyorsanız ve kullanmıyorsanız , kullanabilirsiniz WINEDEBUG=+loaddll wine <program>.


7
Windows'u hedeflemek için Wine'a karşı geliştirme yapmak beni çok tuhaf bir fikirdi (öncelikle Linux'u hedefliyorum) ... ve aslında prototip oluşturma için beklediğimden çok daha sorunsuz çalışıyor . Çok çok havalı.
zxq9

Windows yerine Wine kullanarak Re: geliştirme: Wine'da çalışan şeyin mutlaka gerçek Windows'ta çalışmayacağını unutmayın. Bunu aramayı unuttuğumda öğrendim GdiplusStartupve GDI + Wine'da sorunsuz çalışırken Windows'ta çalışmadı. Bu hatayı yalnızca Wine'da programda hata ayıkladıktan sonra, Windows'ta çalıştırmayı denedikten sonra fark ettim.
Ruslan

İşletim sistemini yeniden başlatmaktan ve değiştirmekten kaçınmak için her zaman Wine'da bir şeyler test ediyorum. Bununla birlikte, büyük bir sürümden önce - veya biraz şüpheli hissettiren bir şey yaptığınızda - bunu Windows yerelde de denemek iyi bir uygulamadır.
Michael Macha

9

Artık lddCygwin'de bir var. Çok eski bir Cygwin sürümüne sahipseniz kullanmanız gerekecek cygcheck.


Evet, ancak çok doğru değil
Stef 3'15

9

Sanırım bunu yapmanın Windows Developer yolu kullanmaktır dumpbin /dependents source.exe. Eğer varsa Visual Studio buradan bulabilirsiniz yüklü: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe.


3
Bu, bağımlıların nerede bulunduğunu göstermemesi çok kötü, bu nedenle çalışma zamanında hangilerinin gerçekten kullanıldığını kesin olarak görebilirsiniz :(.
rubenvb

SysInternals MS paketinden @rubenvb Process Explorer, yolları ve sembol / dll araması dahil olmak üzere tüm DLL'lerin alt bölmeli görünümüne ve ikili yüklere sahiptir.
kevinf

8

Windows'ta Git'in daha yeni sürümleri, ldd dahil olmak üzere birçok kullanışlı Unix komutunu taklit eden Git BASH adlı bir şeyle paketlenmiş olarak gelir .

Görünüşe göre sadece bulunabilen kitaplıkları rapor ediyor. Böylece, kullanılan kitaplıkların nerede bulunduğu, ancak hangilerinin eksik olmadığı hakkında bir genel bakış elde etmek için bunu kullanabilirsiniz.



1

Windows 10 için, visual studio 2017 ile, pencerelerin arama çubuğuna gidip şunu yazıyorum:

"VS 2017 için geliştirici Komut İstemi" (Visual studio geliştiricisi için özel bir cmd.exe)

Bu, / IMPORTS etiketiyle kullanılması gereken DUMPBIN'e erişim sağlar. Örneğin, doğru dizinde:

DUMPBIN / IMPORTS yourfile.exe (diğer uzantılar da çalışabilir)

Benim için bu, DLL'yi ve kullanılan işlevleri listeler.

Alternatif olarak, çok daha ayrıntılı olan \ TÜM etiketini kullanabilirsiniz.

DUMPBIN'in microsoft açıklamasına bakın:

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

Komut tarafından geri gönderilen içeriğin örneği (sadece bir kısmı ile)


tam örnek şöyle:dumpbin /imports *.dll | find /i ".dll"
Mohammad Kanan

Eski cevaplara harika bir katkı!
Mohammad Kanan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.