У мене є двійковий файл - статична бібліотека Windows (* .lib).
Чи є простий спосіб дізнатися назви функцій та їх інтерфейс із цієї бібліотеки?
Щось подібне emfar
і elfdump
утиліти (в системах Linux)?
У мене є двійковий файл - статична бібліотека Windows (* .lib).
Чи є простий спосіб дізнатися назви функцій та їх інтерфейс із цієї бібліотеки?
Щось подібне emfar
і elfdump
утиліти (в системах Linux)?
Відповіді:
Припустимо, що ви говорите про статичну бібліотеку, DUMPBIN /SYMBOLS
показує функції та об'єкти даних у бібліотеці. Якщо ви говорите про бібліотеку імпорту ( .lib
використовується для позначення символів, експортованих з DLL), то вам потрібно DUMPBIN /EXPORTS
.
Зауважте, що для функцій, пов'язаних з двійковим інтерфейсом "C", це все одно не отримає повернення значень, параметрів або умовного виклику. Ця інформація взагалі не закодована .lib
; Ви повинні це знати достроково (наприклад, через прототипи у файлах заголовків), щоб правильно їх викликати.
Для функцій, пов'язаних з бінарним інтерфейсом C ++, умова виклику та аргументи кодуються в експортованому імені функції (також називається "ім'я керування"). DUMPBIN /SYMBOLS
покаже вам як ім'я функції "mangled", а також декодований набір параметрів.
Я хотів такий інструмент, як 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
ключовим словом за допомогою одного з цих інструментів здається хорошим підказом.