Що є еквівалентом ldd Linux на Windows?


Відповіді:


53

Ось Dependency Walker.

http://dependencywalker.com/


5
чи існує щось на зразок ldd, лише для командного рядка? Шукаю щось, що я можу використати з підказки. Віддайте перевагу невеликій легкій команді, бажано без зайвих DLL.
Дж. М. Беккер,

2
Схоже, що він має інтерфейс командного рядка: dependencywalker.com/help/html/hidr_command_line_help.htm
Daniel A. White

3
Синтаксис виглядає приблизно так: depend.exe / c /oc:dependencies.csv /ot:dependencies.txt mydll.dll
Boinst

3
Dependency Walker працює добре, але це неприємна зміна від простоти ldd (особливо якщо ви звикли створювати сценарії, інструмент споживає свої результати і, скажімо, автоматично виконує з ним завдання з упаковки).
zxq9,

2
Аварії в Windows 10.
mikemaccana

42

dumpbinКоманда може бути корисна для багатьох речей, хоча в цьому випадку залежність ходок, ймовірно, трохи більш багатослівним.

dumpbin /dependents some.dll

Приклад виводу:

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

Дамп файлу StanPolicy.dll

Тип файлу: DLL

Зображення має такі залежності:

mscoree.dll

Резюме

    2000 .reloc
    2000 .rsrc
   1E000 .text

5
Це найкращий варіант, якщо у вас встановлена ​​Visual Studio.
сакра

35

або інструмент GNU:

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

1
Чи можна використовувати objdump для відображення повного шляху? Мені потрібно щось рекурсивно, і для цього потрібен повний шлях для кожної залежної DLL
INS

3
objdump показує лише те, що містить файл. Він не намагається виконувати будь-який пошук шляху, як lddце робить.
jørgensen

26

PowerShell може це зробити

PS> Почати процес -PassThru calc.exe | Get-Process -Module

   Розмір (K) Назва модуля
   ------- ----------
       908 calc.exe
      1700 ntdll.dll
      1148 kernel32.dll
       432 KERNELBASE.dll
     13856 SHELL32.dll
           ...

6
Здається, це працює лише настільки, наскільки програма насправді знаходить dll - у разі відмови список буде неповним.
01d55,

12

Якщо ви використовуєте, wineа не справжню Windows, ви можете використовувати WINEDEBUG=+loaddll wine <program>.


7
Розробка проти Wine для націлювання на Windows видалася мені настільки дивною ідеєю, що мені довелося спробувати (я в першу чергу націлений на Linux) ... і насправді це працює набагато плавніше, ніж я очікував для створення прототипів. Дуже, дуже класно.
zxq9,

Re: розробка з використанням Wine замість Windows: зауважте, що те, що працює у Wine, не обов’язково працюватиме на реальній Windows. Я дізнався про це, коли забув зателефонувати GdiplusStartup, і GDI + працював без проблем у Wine, тоді як у Windows ні. Цю помилку я помітив лише після того, як налагодив програму у Wine, намагаючись поруч запустити її у Windows.
Руслан

8

Зараз є lddв Cygwin. Якщо у вас дуже стара версія Cygwin, вам доведеться використовувати cygcheck.


Так, але це не дуже точно
Стеф

8

Я думаю, що спосіб для розробника Windows - це використовувати dumpbin /dependents source.exe. Якщо у вас є Visual Studio встановлена , ви можете знайти його тут: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\dumpbin.exe.


3
Шкода, що це не показує, де знаходяться утриманці, щоб ви могли точно побачити, які з них насправді використовуються під час виконання :(.
rubenvb

Провідник процесів @rubenvb від SysInternals MS Suite має нижню панель подання всіх DLL-файлів, що завантажуються двійково, включаючи їх шляхи та пошук символів / DLL.
kevinf

7

Новіші версії Git для Windows постачаються з Git BASH , який емулює багато корисних команд Unix, включаючи ldd.

Здається, він повідомляє лише про ті бібліотеки, які можна знайти. Таким чином, ви можете використовувати це, щоб отримати огляд того, де розташовані використовувані бібліотеки, але не які відсутні.



0

Для Windows 10, з Visual Studio 2017, я заходжу в рядок пошуку Windows і вводжу:

"Командний рядок розробника для VS 2017" (спеціальний cmd.exe для розробника Visual Studio)

Це дозволяє отримати доступ до DUMPBIN, який слід використовувати з тегом \ IMPORTS. Наприклад, у правильному каталозі:

DUMPBIN \ IMPORTS yourfile.exe (інші розширення також можуть працювати)

Для мене цей список DLL та використовувані функції.

Крім того, ви можете використовувати тег \ ALL, який є набагато детальнішим.

див. пояснення Microsoft щодо DUMPBIN:

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

Приклад (лише з частиною) вмісту, надісланого назад командою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.