Ich habe eine Binärdatei - Windows statische Bibliothek (* .lib).
Gibt es eine einfache Möglichkeit, Namen der Funktionen und ihrer Schnittstelle aus dieser Bibliothek herauszufinden?
Ähnliches emfar
und elfdump
Dienstprogramme (auf Linux-Systemen)?
windows
static-libraries
libraries
Nick Borodulin
quelle
quelle
Antworten:
Angenommen, Sie sprechen von einer statischen Bibliothek,
DUMPBIN /SYMBOLS
werden die Funktionen und Datenobjekte in der Bibliothek angezeigt. Wenn Sie über eine Importbibliothek sprechen (eine.lib
, die auf Symbole verweist, die aus einer DLL exportiert wurden), möchten SieDUMPBIN /EXPORTS
.Beachten Sie, dass Sie für Funktionen, die mit der Binärschnittstelle "C" verknüpft sind, immer noch keine Werte, Parameter oder Aufrufkonventionen zurückgeben. Diese Informationen sind überhaupt nicht in der verschlüsselt
.lib
. Das muss man vorher wissen (zB über Prototypen in Header-Dateien), um sie richtig aufzurufen.Bei Funktionen, die mit der C ++ - Binärschnittstelle verknüpft sind, werden die Aufrufkonvention und die Argumente im exportierten Namen der Funktion (auch als "Name Mangling" bezeichnet) codiert.
DUMPBIN /SYMBOLS
zeigt Ihnen sowohl den Namen der "verstümmelten" Funktion als auch den decodierten Parametersatz.quelle
Öffnen Sie eine visuelle Befehlskonsole (Visual Studio-Eingabeaufforderung)
oder
oder öffne es einfach mit 7-zip :) es ist ein AR-Archiv
quelle
Ich wollte ein Tool wie
ar t libfile.a
unter Unix.Das Windows-Äquivalent ist
lib.exe /list libfile.lib
.quelle
"dumpbin -exports" funktioniert für DLL, manchmal aber auch nicht für lib. Für lib können wir "dumpbin-linkermember" oder einfach "dumpbin-linkermember: 1" verwenden.
quelle
LIB.EXE ist der Bibliothekar für VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(wie libtool unter Unix)
quelle
DUMPBIN / EXPORTS erhalten die meisten dieser Informationen, und wenn Sie auf MSDN klicken, erhalten Sie den Rest.
Holen Sie sich eines der Visual Studio-Pakete. C ++
quelle
1) Öffnen Sie eine Entwickler-Eingabeaufforderung für VS 2017 (oder eine beliebige Version auf Ihrem Computer) (Diese sollte sich unter folgender Adresse befinden:> Alle Programme -> Visual Studio 2017 (oder eine beliebige Version auf Ihrem Computer) -> Visual Studio Tools -> Entwickler-Eingabeaufforderung für VS 2017.
2) Geben Sie den folgenden Befehl ein:
dumpbin /EXPORTS my_lib_name.lib
quelle
Wie in anderen Antworten zu sehen ist, müssen Sie eine Entwickler-Eingabeaufforderung öffnen, die in Ihrer Version von Visual Studio angeboten wird
dumpbin.exe
in Ihrem Ausführungspfad . Andernfalls können Sie die erforderlichen Umgebungsvariablen manuell festlegen.dumpbin /EXPORTS yourlibrary.lib
zeigt normalerweise nur eine winzige Liste von Symbolen. In vielen Fällen werden die Funktionen, die die Bibliothek exportiert, nicht angezeigt.dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
wird diese Symbole zeigen, aber auch eine unglaublich große Menge anderer Symbos. Sie müssen sie also filtern, möglicherweise mit einer Pipe anfindstr
(wenn Sie ein MS-Windows-Tool möchten) odergrep
.Suche in der
Static
Schlüsselworts mit einem dieser Tools scheint ein guter Hinweis zu sein.quelle