Как увидеть содержимое библиотеки Windows (*.lib)

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

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

Ответ 1

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

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

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

Ответ 2

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

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

или

lib /LIST openssl.x86.lib

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

Ответ 3

Мне нужен инструмент, например ar t libfile.a в unix.
Эквивалент Windows lib.exe /list libfile.lib.

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

dumpbin/EXPORTS my_lib_name.lib

Ответ 9

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

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

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

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