Ho un file binario - libreria statica di Windows (* .lib).
Esiste un modo semplice per scoprire i nomi delle funzioni e della loro interfaccia da quella libreria?
Qualcosa di simile emfar
e elfdump
utilità (su sistemi Linux)?
Ho un file binario - libreria statica di Windows (* .lib).
Esiste un modo semplice per scoprire i nomi delle funzioni e della loro interfaccia da quella libreria?
Qualcosa di simile emfar
e elfdump
utilità (su sistemi Linux)?
Risposte:
Supponendo che stai parlando di una libreria statica, DUMPBIN /SYMBOLS
mostra le funzioni e gli oggetti dati nella libreria. Se stai parlando di una libreria di importazione ( .lib
utilizzata per fare riferimento a simboli esportati da una DLL), allora vuoi DUMPBIN /EXPORTS
.
Si noti che per le funzioni collegate all'interfaccia binaria "C", ciò non consente di restituire valori, parametri o convenzioni di chiamata. Quella informazione non è codificata .lib
affatto; devi saperlo in anticipo (ad esempio tramite prototipi nei file di intestazione) per poterli chiamare correttamente.
Per le funzioni collegate con l'interfaccia binaria C ++, la convenzione di chiamata e gli argomenti sono codificati nel nome esportato della funzione (chiamato anche "nome mangling"). DUMPBIN /SYMBOLS
ti mostrerà sia il nome della funzione "mangled" che il set di parametri decodificato.
Apri una console dei comandi visivi (prompt dei comandi di Visual Studio)
dumpbin /ARCHIVEMEMBERS openssl.x86.lib
o
lib /LIST openssl.x86.lib
o semplicemente aprilo con 7-zip :) è un archivio AR
LIB.EXE è il bibliotecario per VS
http://msdn.microsoft.com/en-us/library/7ykb2k5f(VS.80).aspx
(come libtool su Unix)
DUMPBIN / EXPORTS Otterrà la maggior parte di tali informazioni e colpire MSDN otterrà il resto.
Ottieni uno dei pacchetti di Visual Studio; C ++
1) Apri un prompt dei comandi per sviluppatori per VS 2017 (o qualunque versione tu abbia sulla tua macchina) (Dovresti trovarti sotto: Menu Start -> Tutti i programmi -> Visual Studio 2017 (o qualunque versione tu abbia sulla tua macchina) -> Strumenti di Visual Studio -> Prompt dei comandi per sviluppatori per VS 2017.
2) Immettere il comando seguente:
dumpbin /EXPORTS my_lib_name.lib
Come puoi vedere in altre risposte, dovrai aprire un Prompt dei comandi per gli sviluppatori offerto nella tua versione di Visual Studio da inserire dumpbin.exe
nel tuo percorso di esecuzione. Altrimenti, è possibile impostare manualmente le variabili di ambiente necessarie.
dumpbin /EXPORTS yourlibrary.lib
di solito mostrerà solo un piccolo elenco di simboli. In molti casi, non mostrerà le funzioni esportate dalla libreria.
dumpbin /SYMBOLS /EXPORTS yourlibrary.lib
mostrerà quei simboli, ma anche una quantità incredibilmente enorme di altri simboli. Quindi, devi filtrarli, possibilmente con una pipe findstr
(se vuoi uno strumento MS-Windows), o grep
.
Cercare una Static
parola chiave usando uno di questi strumenti sembra essere un buon suggerimento.