2016-06-10 2 views
1

У меня есть проект на C++, который ссылается на lib, который ссылается на dll. В моем случае я хочу создать пакет установки, который включает все необходимые файлы (например, сборки и т. Д.), И поэтому мне нужны эти ссылочные сборки, которые также будут включены в пакет установки.Как определить, какие библиотеки DLL ссылаются?

Есть ли способ узнать, какие сборки ссылаются на lib? Я выполняю PowerShell, который имеет доступ к файлу проекта и читает его, чтобы идентифицировать все необходимые файлы, но эта сборка с прямой ссылкой не указана где-то в самом файле проекта.

Отказ от ответственности: Я не специалист любыми средствами, когда речь идет о родной C++ проецирует

+0

Для .NET используйте инструмент [Fuslogvw.exe] (https://msdn.microsoft.com/en-us/library/e74a18c4.aspx) для * «диагностики, почему .NET Framework не может найти сборку на время запуска "*. – IInspectable

ответ

2

Инструмент SDK «Dumpbin» имеет различные варианты оказания помощи, а также;

  • dumpbin /imports
  • Или через линкер link /dump /imports

Если вы строите Либерал в проект после того, как скомпилирован вы можете использовать «Dependency Walker» для просмотра зависимостей. Он доступен от its website и в составе Windows Driver Kit; версии могут отличаться. Примечание; остерегайтесь использования на новых платформах, as commented below.

В общем, утилиты SDK являются самыми современными и правильными для целей, которые вы используете.

+1

Вы также можете использовать 'dumpbin/import' на скомпилированном выходе (или' link/dump/exports' - dumpbin и editbin - это просто оболочки для ссылки) – Rup

+0

Он будет работать на .lib, но я не могу найти хороший способ просто получить имя DLL. 'dumpbin/headers' будет выгружать структуру для импорта символа, которая содержит строку« Имя DLL », но вам нужно будет передать ее через grep, sort, uniq, чтобы просто получить один вывод, который я думаю. – Rup

+0

@Rup, имеет смысл. Эти инструменты сосредоточены вокруг символов, а затем откуда они (те, которые загружают их по мере необходимости во время выполнения). Я думаю, что это почти все, что делает Dependency Walker, это просто приятный графический интерфейс поверх всего основного механизма. – Niall