Инструмент командной строки для поиска зависимостей Dll
Какие инструменты командной строки существуют для рекурсивного поиска всех зависимостей DLL? Я пробовал dumpbin и Dependency Walker (также известный как Depends.exe), которые поставляются с Visual Studio, но dumpbin находит только первый уровень зависимостей, и вывод Dependency Walker не совсем подходит для работы с компьютером.
3 ответа
Попробуйте /oc:FILENAME
Опция зависит, чтобы написать файл значений через запятую. Похоже, что разбирать на машине проще, чем текстовый файл произвольной формы, созданный параметром /ot:FILENAME/.
У Dependency Walker есть много опций, включая параметры вывода в файл. Одним из них является /oc:<path>
который записывает вывод в файл CSV, который легко анализируется другими инструментами или даже просто импортируется в приложение электронной таблицы.
В зависимости от того, что вам нужно, зависимости могут иметь кроссплатформенные инструменты для этого, например, пакет исправлений CMake, который может скопировать все обнаруженные несистемные зависимости в местоположение вашей цели (исполняемая или общая библиотека), даже на винде. Документация не дает четкого объяснения, но я уже давно использую это для кроссплатформенного проекта.
С использованием /oc:<path>
Опция Dependency Walker дает вам файл CSV, который легко анализируется. Если вам также нужны пути к библиотекам, вам также необходимо использовать -f 1
вариант. Возможно, вы захотите сделать это, если вам нужно скопировать библиотеки (например, сделать распространяемую версию исполняемого файла).
К сожалению, в выходных данных, создаваемых с меткой зависящего от.exe, пути к библиотекам преобразуются в нижний регистр, а имя библиотеки DLL - в верхний. Например,
C: \ qtsdk \ Desktop \ Qt \ 4.7.4 \ MinGW \ Bin \ qtcore4.dll
Когда библиотека фактически расположена по адресу:
C: \ QtSDK \ Desktop \ Qt \ 4.7.4 \ MinGW \ Bin\QtCore4.dll
Кажется, не существует способа, позволяющего получить зависящий от.exe путь.exe, что является позором.