Domanda

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 ai programmi di utilità emfar e elfdump (su sistemi Linux)?

È stato utile?

Soluzione

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 (un .lib usato per riferirsi ai simboli esportati da una DLL), allora vuoi DUMPBIN / EXPORTS .

Nota che per le funzioni collegate con " C " interfaccia binaria, questo non ti restituirà valori, parametri o convenzioni di chiamata. Quelle informazioni non sono affatto codificate nel .lib ; devi saperlo in anticipo (tramite prototipi nei file di intestazione, ad esempio) 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 "quotato a terra" nome della funzione e insieme di parametri decodificati.

Altri suggerimenti

Apri una console dei comandi visivi (prompt dei comandi di Visual Studio)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

o

lib /LIST openssl.x86.lib

o basta aprirlo con 7-zip :) è un archivio AR

Volevo uno strumento come ar t libfile.a in unix.
L'equivalente di Windows è lib.exe / list libfile.lib .

LIB.EXE è il bibliotecario di VS

http://msdn.microsoft.com/en -us / library / 7ykb2k5f (VS.80) aspx

(come libtool su Unix)

"dumpbin -exports" funziona per DLL, ma a volte potrebbe non funzionare per lib. Per lib possiamo usare " dumpbin -linkermember " o semplicemente " dumpbin -linkermember: 1 " ;.

DUMPBIN / EXPORTS Otterrà la maggior parte di tali informazioni e premendo 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 sul tuo computer) (Dovrebbe trovarsi sotto: Menu Start - > Tutti i programmi - > Visual Studio 2017 (o qualunque versione tu sulla tua macchina) - > Visual Studio Tools  - > Prompt dei comandi per sviluppatori per VS 2017.

2) Immettere il comando seguente:

dumpbin / EXPORTS my_lib_name.lib

Come si può vedere in altre risposte, dovrai aprire un Prompt dei comandi per gli sviluppatori offerto nella tua versione di Visual Studio per avere dumpbin.exe nel tuo percorso di esecuzione. Altrimenti, puoi impostare manualmente le variabili d'ambiente necessarie.

dumpbin / EXPORTS yourlibrary.lib di solito mostra 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 su findstr (se vuoi uno strumento MS-Windows) o grep .

Cercare la parola chiave Static usando uno di questi strumenti sembra essere un buon suggerimento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top