Eu tenho um arquivo binário - biblioteca estática do Windows (* .lib).
Existe uma maneira simples de descobrir nomes das funções e suas interfaces nessa biblioteca?
Algo semelhante ao emfar
e elfdump
utilitários (em sistemas Linux)?
windows
static-libraries
libraries
Nick Borodulin
fonte
fonte
Respostas:
Supondo que você esteja falando de uma biblioteca estática,
DUMPBIN /SYMBOLS
mostra as funções e objetos de dados na biblioteca. Se você está falando de uma biblioteca de importação (.lib
usada para se referir a símbolos exportados de uma DLL), então você desejaDUMPBIN /EXPORTS
.Observe que, para funções vinculadas à interface binária "C", isso ainda não fará com que você retorne valores, parâmetros ou convenções de chamada. Essa informação não está codificada de forma
.lib
alguma; você precisa saber isso com antecedência (por meio de protótipos nos arquivos de cabeçalho, por exemplo) para chamá-los corretamente.Para funções vinculadas à interface binária do C ++, a convenção e os argumentos de chamada são codificados no nome exportado da função (também chamado de "nome incorreto").
DUMPBIN /SYMBOLS
mostrará o nome da função "mutilada" e o conjunto de parâmetros decodificados.fonte
Abra um console de comando visual (prompt de comando do Visual Studio)
ou
ou apenas abra-o com 7-zip :) é um arquivo AR
fonte
Eu queria uma ferramenta como
ar t libfile.a
no unix.O equivalente do Windows é
lib.exe /list libfile.lib
.fonte
"dumpbin -exports" funciona para dll, mas às vezes pode não funcionar para lib. Para a lib, podemos usar "dumpbin -linkermember" ou apenas "dumpbin -linkermember: 1".
fonte
LIB.EXE é o bibliotecário do VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(como libtool no Unix)
fonte
DUMPBIN / EXPORTS maior parte dessas informações e, ao acessar o MSDN, o restante.
Obtenha um dos pacotes do Visual Studio; C ++
fonte
1) Abra um prompt de comando do desenvolvedor para o VS 2017 (ou qualquer versão que você tenha na sua máquina) (ele deve estar localizado em: Menu Iniciar -> Todos os programas -> Visual Studio 2017 (ou qualquer versão que você tenha na sua máquina) -> Ferramentas do Visual Studio -> Prompt de Comando do Desenvolvedor para o VS 2017.
2) Digite o seguinte comando:
dumpbin /EXPORTS my_lib_name.lib
fonte
Como pode ser visto em outras respostas, você precisará abrir um Prompt de Comando do Desenvolvedor oferecido na sua versão do Visual Studio para ter
dumpbin.exe
no seu caminho de execução. Caso contrário, você pode definir as variáveis de ambiente necessárias manualmente.dumpbin /EXPORTS yourlibrary.lib
normalmente mostrará apenas uma pequena lista de símbolos. Em muitos casos, não mostrará as funções que a biblioteca exporta.dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
mostrará esses símbolos, mas também uma quantidade incrivelmente grande de outros simbos. Então, você precisa filtrá-los, possivelmente com um pipefindstr
(se você deseja uma ferramenta MS-Windows) ougrep
.Pesquisando a
Static
palavra - chave usando uma dessas ferramentas parece ser uma boa dica.fonte