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

StackOverflow https://stackoverflow.com/questions/305287

Вопрос

У меня есть двоичный файл - статическая библиотека 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 с помощью одного из этих инструментов - хороший совет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top