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