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)?
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)?
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 chcesz DUMPBIN /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.
Otwórz wizualną konsolę poleceń (wiersz polecenia programu Visual Studio)
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
lub
lib /LIST openssl.x86.lib
lub po prostu otwórz go za pomocą 7-zip :) jest to archiwum AR
LIB.EXE jest bibliotekarzem VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(jak libtool w systemie Unix)
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
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 do findstr
(jeśli chcesz narzędzie MS-Windows) lub grep
.
Wyszukiwanie Static
słowa kluczowego za pomocą jednego z tych narzędzi wydaje się być dobrą wskazówką.