У меня есть двоичный файл - статическая библиотека Windows (* .lib).
Есть ли простой способ узнать имена функций и их интерфейс из этой библиотеки?
Нечто подобное emfar
и elfdump
утилиты (в системах Linux)?
У меня есть двоичный файл - статическая библиотека Windows (* .lib).
Есть ли простой способ узнать имена функций и их интерфейс из этой библиотеки?
Нечто подобное emfar
и elfdump
утилиты (в системах Linux)?
Ответы:
Предполагая, что вы говорите о статической библиотеке, DUMPBIN /SYMBOLS
показывает функции и объекты данных в библиотеке. Если вы говорите о библиотеке импорта ( .lib
используется для обозначения символов, экспортируемых из DLL), то вы хотите DUMPBIN /EXPORTS
.
Обратите внимание, что для функций, связанных с двоичным интерфейсом «C», это все равно не даст вам возвращаемых значений, параметров или соглашения о вызовах. Эта информация вообще не закодирована .lib
; Вы должны знать это заранее (например, через прототипы в заголовочных файлах), чтобы правильно их вызывать.
Для функций, связанных с двоичным интерфейсом C ++, соглашение о вызовах и аргументы кодируются в экспортированном имени функции (также называемом «искажение имени»). DUMPBIN /SYMBOLS
покажет вам как «искаженное» имя функции, так и декодированный набор параметров.
Я хотел инструмент, как ar t libfile.a
в Unix.
Окна эквивалентны lib.exe /list libfile.lib
.
LIB.EXE - библиотекарь для VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(как libtool в Unix)
1) Откройте Командную строку разработчика для VS 2017 (или любой другой версии на вашем компьютере) (она должна находиться в: меню Пуск -> Все программы -> Visual Studio 2017 (или любой другой версии на вашем компьютере) -> Инструменты Visual Studio -> Командная строка разработчика для 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
ключевого слова с помощью одного из этих инструментов, кажется, хороший совет.