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

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

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

8 ответов

Решение

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

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

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

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

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

или же

lib /LIST openssl.x86.lib

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

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

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

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

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

(как libtool в Unix)

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

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

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

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

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

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

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

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

dumpbin /EXPORTS my_lib_name.lib

Другие вопросы по тегам