webentwicklung-frage-antwort-db.com.de

So zeigen Sie den Inhalt der Windows-Bibliothek an (* .lib)

Ich habe eine binäre Datei - statische Windows-Bibliothek (* .lib).
Gibt es einen einfachen Weg, um Namen der Funktionen und ihrer Schnittstelle aus dieser Bibliothek herauszufinden?

Etwas ähnlich wie emfar und elfdump (auf Linux-Systemen)?

148
Nick Borodulin

Angenommen, Sie sprechen von einer statischen Bibliothek, zeigt DUMPBIN /SYMBOLS die Funktionen und Datenobjekte in der Bibliothek. Wenn Sie von einer Importbibliothek sprechen (ein .lib, der sich auf von einer DLL exportierte Symbole bezieht), möchten Sie DUMPBIN /EXPORTS.

Beachten Sie, dass Sie bei Funktionen, die mit der binären Schnittstelle "C" verknüpft sind, immer noch keine Werte, Parameter oder Aufrufkonventionen zurückgeben. Diese Informationen sind überhaupt nicht im .lib kodiert. das müssen Sie vorab wissen (zB über Prototypen in Header-Dateien), um sie korrekt aufrufen zu können.

Für Funktionen, die mit der binären C++ - Schnittstelle verknüpft sind, werden die aufrufende Konvention und die Argumente im exportierten Namen der Funktion (auch als "Namensveränderung" bezeichnet) codiert. DUMPBIN /SYMBOLS zeigt Ihnen sowohl den Funktionsnamen als auch den dekodierten Parametersatz an.

170
Tim Lesher

Öffnen Sie eine visuelle Befehlskonsole (Visual Studio-Eingabeaufforderung).

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

oder

lib /LIST openssl.x86.lib

oder einfach mit 7-Zip öffnen :) es ist ein AR-Archiv

68
Tanguy

Ich wollte ein Tool wie ar t libfile.a in Unix.
Das Windows-Äquivalent ist lib.exe /list libfile.lib.

19
lgwest

LIB.EXE ist der Bibliothekar für VS

http://msdn.Microsoft.com/de-de/library/7ykb2k5f(VS.80).aspx

(wie libtool unter Unix)

13
Lou Franco

DUMPBIN / EXPORTS Die meisten dieser Informationen werden abgerufen. Wenn Sie auf MSDN klicken, wird der Rest angezeigt.

Holen Sie sich eines der Visual Studio-Pakete. C++

12
jim

"dumpbin -exports" funktioniert für dll, funktioniert aber manchmal nicht für lib. Für lib können wir "dumpbin -linkermember" oder nur "dumpbin -linkermember: 1" verwenden. 

11
Frank

1) Öffnen Sie eine Developer-Eingabeaufforderung für VS 2017 (oder die Version, die Sie auf Ihrem Computer installiert haben) (Diese befindet sich unter: Startmenü -> Alle Programme -> Visual Studio 2017 (oder welche Version Sie auf Ihrem Computer haben) -> Visual Studio Tools -> Eingabeaufforderung für Entwickler für VS 2017.

2) Geben Sie den folgenden Befehl ein:

dumpbin /EXPORTS my_lib_name.lib

3
user3292568

Wie in anderen Antworten zu sehen ist, müssen Sie eine in Ihrer Version von Visual Studio angebotene Developer-Eingabeaufforderung öffnen, um dumpbin.exe in Ihrem Ausführungspfad zu haben. Andernfalls können Sie die erforderlichen Umgebungsvariablen manuell festlegen.

dumpbin /EXPORTS yourlibrary.lib zeigt normalerweise nur eine kleine Liste von Symbolen. In vielen Fällen werden die von der Bibliothek exportierten Funktionen nicht angezeigt. 

dumpbin /SYMBOLS /EXPORTS yourlibrary.lib zeigt diese Symbole an, aber auch unglaublich viele andere Symbos. Sie müssen sie also filtern, möglicherweise mit einer Pipe nach findstr (wenn Sie ein MS-Windows-Tool möchten) oder grep

Das Durchsuchen des Static-Schlüsselworts mit einem dieser Tools scheint ein guter Hinweis zu sein.

0