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) ?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top