Как просмотреть содержимое библиотеки 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