web-dev-qa-db-fra.com

Comment voir le contenu de la bibliothèque Windows (* .lib)

J'ai un fichier binaire - bibliothèque statique Windows (* .lib).
Existe-t-il un moyen simple de rechercher les noms des fonctions et leur interface à partir de cette bibliothèque?

Quelque chose de semblable aux utilitaires emfar et elfdump (sur les systèmes Linux)?

148
Nick Borodulin

En supposant que vous parliez d'une bibliothèque statique, DUMPBIN /SYMBOLS affiche les fonctions et les objets de données de la bibliothèque. Si vous parlez d'une bibliothèque d'importation (un .lib désignait des symboles exportés à partir d'une DLL), vous souhaitez DUMPBIN /EXPORTS.

Notez que pour les fonctions liées à l'interface binaire "C", cela ne vous permet toujours pas d'obtenir des valeurs de retour, des paramètres ou des conventions d'appel. Cette information n'est pas du tout codée dans le .lib; vous devez le savoir à l'avance (via des prototypes dans les fichiers d'en-tête, par exemple) pour pouvoir les appeler correctement.

Pour les fonctions liées à l'interface binaire C++, la convention d'appel et les arguments sont codés dans le nom exporté de la fonction (également appelé "nom mangling"). DUMPBIN /SYMBOLS vous montrera le nom de la fonction "mutilé" ainsi que le jeu de paramètres décodé.

170
Tim Lesher

Ouvrir une console de commande visuelle (invite de commande Visual Studio)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

ou

lib /LIST openssl.x86.lib

ou ouvrez-le simplement avec 7-Zip :) c'est une archive AR

68
Tanguy

Je voulais un outil comme ar t libfile.a sous Unix.
L’équivalent Windows est lib.exe /list libfile.lib.

19
lgwest

LIB.EXE est le bibliothécaire pour VS

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

(comme libtool sous Unix)

13
Lou Franco

DUMPBIN / EXPORTS obtiendra la plupart de ces informations et MSDN obtiendra le reste.

Procurez-vous l'un des packages Visual Studio. C++

12
jim

"dumpbin -exports" fonctionne pour les dll, mais peut parfois ne pas fonctionner pour lib. Pour lib, nous pouvons utiliser "dumpbin -linkermember" ou simplement "dumpbin -linkermember: 1". 

11
Frank

1) Ouvrez une invite de commande du développeur pour VS 2017 (ou toute version que vous avez sur votre machine) (elle devrait se trouver sous: menu Démarrer -> Tous les programmes -> Visual Studio 2017 (ou quelle que soit la version de votre ordinateur) -> Outils Visual Studio -> Invite de commande de développeur pour VS 2017.

2) Entrez la commande suivante:

dumpbin /EXPORTS my_lib_name.lib

3
user3292568

Comme on peut le voir dans d’autres réponses, vous devrez ouvrir une invite de commande du développeur proposée dans votre version de Visual Studio pour que dumpbin.exe figure dans votre chemin d’exécution. Sinon, vous pouvez définir manuellement les variables d'environnement nécessaires.

dumpbin /EXPORTS yourlibrary.lib n'affichera généralement qu'une petite liste de symboles. Dans de nombreux cas, les fonctions exportées par la bibliothèque ne seront pas affichées. 

dumpbin /SYMBOLS /EXPORTS yourlibrary.lib montrera ces symboles, mais aussi une quantité incroyablement énorme d’autres symboles. Donc, vous devez les filtrer, éventuellement avec un tube vers findstr (si vous voulez un outil MS-Windows), ou grep

Rechercher le mot clé Static à l'aide de l'un de ces outils semble être un bon indice.

0
Hilton Fernandes