Как просмотреть содержимое библиотеки Windows (* .lib) - PullRequest
155 голосов
/ 20 ноября 2008

У меня есть двоичный файл - статическая библиотека Windows (* .lib).
Есть ли простой способ узнать имена функций и их интерфейс из этой библиотеки?

Что-то похожее на утилиты emfar и elfdump (в системах Linux)?

Ответы [ 8 ]

175 голосов
/ 20 ноября 2008

Если вы говорите о статической библиотеке, DUMPBIN /SYMBOLS показывает функции и объекты данных в библиотеке. Если вы говорите о библиотеке импорта (.lib используется для обозначения символов, экспортируемых из DLL), то вам нужно DUMPBIN /EXPORTS.

Обратите внимание, что для функций, связанных с двоичным интерфейсом "C", по-прежнему не будут возвращаться значения, параметры или соглашение о вызовах. Эта информация вообще не закодирована в .lib; Вы должны знать это заранее (например, с помощью прототипов в заголовочных файлах), чтобы правильно их вызывать.

Для функций, связанных с двоичным интерфейсом C ++, соглашение о вызовах и аргументы кодируются в экспортированном имени функции (также называемом «искажение имени»). DUMPBIN /SYMBOLS покажет вам как "искаженное" имя функции, так и декодированный набор параметров.

77 голосов
/ 01 ноября 2014

Открытие визуальной командной консоли (командная строка Visual Studio)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

или

lib /LIST openssl.x86.lib

или просто откройте его с 7-zip :) это AR архив

20 голосов
/ 20 января 2011

Я хотел такой инструмент, как ar t libfile.a в Unix.
Эквивалент Windows - lib.exe /list libfile.lib.

13 голосов
/ 10 февраля 2017

«dumpbin -exports» работает для dll, но иногда может не работать для lib. Для lib мы можем использовать «dumpbin -linkermember» или просто «dumpbin -linkermember: 1».

13 голосов
/ 20 ноября 2008

LIB.EXE - библиотекарь для VS

http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx

(как libtool в Unix)

12 голосов
/ 20 ноября 2008

DUMPBIN / EXPORTS Получит большую часть этой информации, а остальное MSDN получит остальное.

Получить один из пакетов Visual Studio; C ++

3 голосов
/ 11 февраля 2014

1) Откройте Командную строку разработчика для VS 2017 (или любой другой версии, установленной на вашем компьютере) (она должна находиться в меню «Пуск» -> Все программы -> Visual Studio 2017 (или любой другой версии, на которой вы работаете ваша машина) -> Инструменты Visual Studio -> Командная строка разработчика для VS 2017.

2) Введите следующую команду:

dumpbin /EXPORTS my_lib_name.lib

0 голосов
/ 31 января 2019

Как видно из других ответов, вам придется открыть командную строку разработчика, предлагаемую в вашей версии Visual Studio, чтобы в вашем пути выполнения было dumpbin.exe. В противном случае вы можете установить необходимые переменные среды вручную.

dumpbin /EXPORTS yourlibrary.lib обычно показывает только небольшой список символов. Во многих случаях он не отображает функции, которые экспортирует библиотека.

dumpbin /SYMBOLS /EXPORTS yourlibrary.lib покажет эти символы, а также невероятно огромное количество других символов. Итак, вы должны отфильтровать их, возможно, с помощью канала до findstr (если вам нужен инструмент для MS-Windows) или grep.

Хороший совет - поиск ключевого слова Static с помощью одного из этих инструментов.

...