Como Ver o Conteúdo da biblioteca do Windows (*.lib)
-
08-07-2019 - |
Pergunta
Eu tenho um arquivo binário - Windows biblioteca estática (*.lib).
Existe uma maneira simples de descobrir os nomes das funções e a sua interface da biblioteca ?
Algo semelhante a emfar
e elfdump
utilitários (em sistemas Linux) ?
Solução
Assumindo que você está falando sobre uma biblioteca estática, DUMPBIN /SYMBOLS
Mostra as funções e objetos de dados na biblioteca. Se você está falando sobre uma biblioteca de importação (um .lib
costumava se referir a símbolos exportados de uma DLL), então você quer DUMPBIN /EXPORTS
.
Observe que, para funções vinculadas à interface binária "C", isso ainda não receberá valores, parâmetros ou convenções de chamadas. Essa informação não é codificada no .lib
de forma alguma; Você precisa saber disso com antecedência (via protótipos nos arquivos de cabeçalho, por exemplo) para chamá -los corretamente.
Para funções vinculadas à interface binária C ++, a convenção de chamada e os argumentos são codificados no nome exportado da função (também chamado de "Nome Mangling"). DUMPBIN /SYMBOLS
mostrará o nome da função "mutilado", bem como o conjunto decodificado de parâmetros.
Outras dicas
Abra um console de comando visual (prompt de comando visual studio)
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
ou
lib /LIST openssl.x86.lib
ou Basta abri-lo com 7-zip :) é um arquivo AR
Eu queria uma ferramenta como ar t libfile.a
em Unix.
O equivalente do Windows é lib.exe /list libfile.lib
.
Lib.exe é o bibliotecário para vs
http://msdn.microsoft.com/en-us/library/7ykb2k5f(vs.80).aspx
(como libtool no Unix)
"Dumpbin -exports" funciona para a DLL, mas às vezes pode não funcionar para a lib. Para Lib, podemos usar "dumpbin -linkermember" ou apenas "dumpbin -linkermember: 1".
Dumpbin /As exportações receberão a maioria dessas informações e o MSDN de atingir o resto.
Obtenha um dos pacotes do Visual Studio; C ++
1) Abra um prompt de comando do desenvolvedor para vs 2017 (ou qualquer versão que você tenha em sua máquina) (ele deve estar localizado em: menu Iniciar -> Todos os programas -> Visual Studio 2017 (ou qualquer versão que você tenha em sua máquina) -> Visual Studio Tools-> Prompt de comando do desenvolvedor para vs 2017.
2) Digite o seguinte comando:
dumpbin /EXPORTS my_lib_name.lib
Como pode ser visto em outras respostas você vai ter que abrir um Desenvolvedor Prompt de Comando oferecido na versão do Visual Studio para ter dumpbin.exe
em seu caminho de execução.Caso contrário, você pode definir as variáveis de ambiente necessárias com a mão.
dumpbin /EXPORTS yourlibrary.lib
normalmente irá mostrar apenas uma pequena lista de símbolos.Em muitos casos, ele não vai mostrar as funções da biblioteca de exportações.
dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
vai mostrar que os símbolos, mas também incrivelmente enorme quantidade de outros symbos.Assim, você começ para filtrá-los, possivelmente com um tubo para findstr
(se você deseja um MS-Windows ferramenta), ou grep
.
Procura o Static
palavra-chave usando uma dessas ferramentas parece ser uma boa dica.