Mam plik binarny - bibliotekę statyczną Windows (* .lib).
Czy istnieje prosty sposób na znalezienie nazw funkcji i ich interfejsu z tej biblioteki?
Coś podobnego do narzędzi emfar
i elfdump
(w systemach Linux)?
windows
static-libraries
libraries
Nick Borodulin
źródło
źródło
Odpowiedzi:
Zakładając, że mówisz o bibliotece statycznej,
DUMPBIN /SYMBOLS
pokazuje funkcje i obiekty danych w bibliotece. Jeśli mówisz o bibliotece importu (.lib
używanej w odniesieniu do symboli wyeksportowanych z biblioteki DLL), to chceszDUMPBIN /EXPORTS
.Zwróć uwagę, że w przypadku funkcji połączonych z interfejsem binarnym „C” nadal nie zwraca to wartości, parametrów ani konwencji wywoływania. Ta informacja nie jest w ogóle zakodowana
.lib
; musisz to wiedzieć z wyprzedzeniem (na przykład poprzez prototypy w plikach nagłówkowych), aby je poprawnie wywołać.W przypadku funkcji połączonych z interfejsem binarnym C ++, konwencja wywoływania i argumenty są kodowane w wyeksportowanej nazwie funkcji (nazywanej również „zniekształcaniem nazw”).
DUMPBIN /SYMBOLS
pokaże zarówno „zniekształconą” nazwę funkcji, jak i zdekodowany zestaw parametrów.źródło
Otwórz wizualną konsolę poleceń (wiersz polecenia programu Visual Studio)
lub
lub po prostu otwórz go za pomocą 7-zip :) jest to archiwum AR
źródło
Chciałem narzędzia jak
ar t libfile.a
w unixie.Odpowiednik systemu Windows to
lib.exe /list libfile.lib
.źródło
"dumpbin -exports" działa dla dll, ale czasami może nie działać dla lib. Dla lib możemy użyć "dumpbin -linkermember" lub po prostu "dumpbin -linkermember: 1".
źródło
LIB.EXE jest bibliotekarzem VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(jak libtool w systemie Unix)
źródło
DUMPBIN / EXPORTS Otrzyma większość tych informacji, a naciśnięcie MSDN dostanie resztę.
Uzyskaj jeden z pakietów Visual Studio; C ++
źródło
1) Otwórz wiersz polecenia dewelopera dla VS 2017 (lub dowolną wersję, którą masz na swoim komputerze) (powinien znajdować się w: Menu Start -> Wszystkie programy -> Visual Studio 2017 (lub dowolna wersja, którą masz na swoim komputerze) -> Visual Studio Tools -> Developer Command Prompt for VS 2017.
2) Wpisz następujące polecenie:
dumpbin /EXPORTS my_lib_name.lib
źródło
Jak widać w innych odpowiedziach, musisz otworzyć wiersz polecenia dla deweloperów oferowany w Twojej wersji programu Visual Studio, aby mieć
dumpbin.exe
na ścieżce wykonywania. W przeciwnym razie możesz ręcznie ustawić niezbędne zmienne środowiskowe.dumpbin /EXPORTS yourlibrary.lib
zwykle pokaże tylko małą listę symboli. W wielu przypadkach nie pokazuje funkcji eksportowanych przez bibliotekę.dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
pokaże te symbole, ale także niewiarygodnie dużą liczbę innych symboli. Więc musisz je filtrować, prawdopodobnie za pomocą potoku dofindstr
(jeśli chcesz narzędzie MS-Windows) lubgrep
.Wyszukiwanie
Static
słowa kluczowego za pomocą jednego z tych narzędzi wydaje się być dobrą wskazówką.źródło