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.