Как просмотреть содержимое библиотеки Windows (*.lib)
-
08-07-2019 - |
Вопрос
У меня есть двоичный файл - статическая библиотека Windows (*.lib).
Есть ли простой способ узнать имена функций и их интерфейс из этой библиотеки?
Что-то подобное emfar
и elfdump
утилиты (в системах Linux)?
Решение
Если вы говорите о статической библиотеке, 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-архив
Мне нужен такой инструмент, как art libfile.a
в unix.
Эквивалентом Windows является lib.exe / list libfile.lib
.
LIB.EXE - библиотекарь для VS
http://msdn.microsoft.com/en -us / библиотека / 7ykb2k5f (VS.80) .aspx р>
(как libtool в Unix)
" dumpbin -exports " работает для dll, но иногда может не работать для lib. Для lib мы можем использовать " dumpbin -linkermember " или просто "dumpbin -linkermember: 1". Р>
DUMPBIN / EXPORTS получит большую часть этой информации, а удар по MSDN - остальной. р>
Получить один из пакетов Visual Studio; C ++
1) Откройте командную строку разработчика для VS 2017 (или любой другой версии, установленной на вашем компьютере) (она должна находиться в: меню «Пуск» -> все программы -> Visual Studio 2017 (или любой другой версии, которую вы используете). на вашем компьютере) -> Инструменты Visual Studio - & GT; Командная строка разработчика для VS 2017.
2) Введите следующую команду:
dumpbin / EXPORTS my_lib_name.lib
Как видно из других ответов, вам нужно открыть командную строку разработчика, предлагаемую в вашей версии Visual Studio, чтобы в вашем пути выполнения был dumpbin.exe
. В противном случае вы можете установить необходимые переменные среды вручную.
dumpbin / EXPORTS yourlibrary.lib
обычно показывает только небольшой список символов. Во многих случаях он не отображает функции, которые экспортирует библиотека. Р>
dumpbin / SYMBOLS / EXPORTS yourlibrary.lib
покажет эти символы, а также невероятно большое количество других символов. Итак, вы должны отфильтровать их, возможно, с помощью канала к findstr
(если вам нужен инструмент для MS-Windows) или grep
. Р>
Поиск ключевого слова Static
с помощью одного из этих инструментов - хороший совет.