Подтвердить что ты не робот

Инструмент командной строки для поиска зависимостей Dll

Какие средства командной строки существуют для рекурсивного поиска всех зависимостей DLL? Я попробовал dumpbin и Dependency Walker (aka Depends.exe) которые поставляются с Visual Studio, но dumpbin находит только первый уровень зависимостей, а выход Dependency Walker не очень дружелюбен к компьютеру.

4b9b3361

Ответ 1

Попробуйте параметр /oc:FILENAME, чтобы он зависел, чтобы написать файл значений, разделенных запятыми. Это выглядит проще, чем машинный, чем текстовый файл "свободной формы", сгенерированный параметром /ot: FILENAME/.

Ответ 2

Dependency Walker имеет множество опций, включая вывод файлов. Один из них - /oc:<path>, который записывает вывод в файл CSV, который легко анализируется другими инструментами или даже просто импортируется в электронную таблицу приложение.

В зависимости от того, что вам нужно, для зависимостей у вас могут быть и кросс-платформенные инструменты для этого - например пакет исправлений CMake который может скопировать все обнаруженные несистемные зависимости в местоположение вашей целевой (исполняемой или разделяемой библиотеки) даже в Windows. Документация не дает четкого объяснения, но я использовал его для этой цели в кросс-платформенном проекте некоторое время.

Ответ 3

Используя опцию /oc:<path>, Dependency Walker дает вам CSV файл, который легко анализируется. Если вам также нужны пути к библиотекам, вам также необходимо использовать опцию -f 1. Возможно, вы захотите сделать это, если вам нужно скопировать библиотеки (например, сделать дистрибутивную версию исполняемого файла).

К сожалению, на выходе файла depend.exe пути к библиотекам преобразуются в нижний регистр, а имя DLL преобразуется в верхний регистр. Например,

C:\qtsdk\Desktop\Qt\4.7.4\MinGW\Bin\QTCORE4.DLL

Когда библиотека фактически находится по адресу:

C:\QtSDK\Desktop\Qt\4.7.4\MinGW\Bin\QtCore4.dll

Кажется, что не существует способа заставить depend.exe правильно сообщать пути, что является позором.