Як побачити вміст бібліотеки Windows (* .lib)


181

У мене є двійковий файл - статична бібліотека Windows (* .lib).
Чи є простий спосіб дізнатися назви функцій та їх інтерфейс із цієї бібліотеки?

Щось подібне emfarі elfdumpутиліти (в системах Linux)?


1
Примітка. Командний рядок, специфічний для .NET, постачається з виданнями Visual Studio, але не з виданням Express. Від: social.msdn.microsoft.com/Forums/en-US/…
isgoed

Відповіді:


199

Припустимо, що ви говорите про статичну бібліотеку, DUMPBIN /SYMBOLSпоказує функції та об'єкти даних у бібліотеці. Якщо ви говорите про бібліотеку імпорту ( .libвикористовується для позначення символів, експортованих з DLL), то вам потрібно DUMPBIN /EXPORTS.

Зауважте, що для функцій, пов'язаних з двійковим інтерфейсом "C", це все одно не отримає повернення значень, параметрів або умовного виклику. Ця інформація взагалі не закодована .lib; Ви повинні це знати достроково (наприклад, через прототипи у файлах заголовків), щоб правильно їх викликати.

Для функцій, пов'язаних з бінарним інтерфейсом C ++, умова виклику та аргументи кодуються в експортованому імені функції (також називається "ім'я керування"). DUMPBIN /SYMBOLSпокаже вам як ім'я функції "mangled", а також декодований набір параметрів.


6
На сьогоднішній день обидва / SYMBOLS та / EXPORTS не працюють. Мені доводиться використовувати / ALL з | більше трубою, щоб побачити всі функції у файлі .lib.
користувач5280911

100

Відкрийте візуальну командну консоль (командна строка Visual Studio)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

або

lib /LIST openssl.x86.lib

або просто відкрийте його 7-zip :) архівом AR


19
Класний трюк із 7-zip, здається, є два .txt файли, що вони означають?
Даміан


14

"dumpbin -exports" працює для dll, але іноді може не працювати для lib. Для lib ми можемо використовувати "dumpbin -linkermember" або просто "dumpbin -linkermember: 1".



13

DUMPBIN / ЕКСПОРТ Отримає більшу частину цієї інформації, а потрапляння на MSDN отримає решту.

Отримайте один із пакетів Visual Studio; C ++


3

1) Відкрийте командний рядок розробника для VS 2017 (або будь-якої версії, яку ви маєте на своєму комп'ютері) (вона повинна розташовуватися в розділі: меню "Пуск" -> "Усі програми"> "Visual Studio 2017" (або будь-якій версії, яка є у вас на комп'ютері) -> Інструменти Visual Studio -> Командна строка розробника для VS 2017.

2) Введіть таку команду:

dumpbin /EXPORTS my_lib_name.lib


2

Як це можна побачити в інших відповідях, вам доведеться відкрити командний рядок для розробників, запропонований у вашій версії Visual Studio, щоб мати dumpbin.exeна своєму шляху виконання. В іншому випадку ви можете встановити необхідні змінні середовища вручну.

dumpbin /EXPORTS yourlibrary.libзазвичай відображається лише крихітний список символів. У багатьох випадках він не відображатиме функції, які експортує бібліотека.

dumpbin /SYMBOLS /EXPORTS yourlibrary.libпокаже, що символи, але також неймовірно величезна кількість інших символів. Отже, вам доведеться їх фільтрувати, можливо, за допомогою труби до findstr(якщо ви хочете інструменту MS-Windows), або grep.

Пошук за Staticключовим словом за допомогою одного з цих інструментів здається хорошим підказом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.