Question

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

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

Était-ce utile?

La solution

En supposant que vous parlez 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 servant à désigner des symboles exportés d'une DLL), vous souhaitez alors DUMPBIN / EXPORTS .

Notez que pour les fonctions liées au & C; C " interface binaire, cela ne vous permettra toujours pas de retourner des valeurs, 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 affichera à la fois le " mutilé " nom de la fonction ainsi que le jeu de paramètres décodé.

Autres conseils

Ouvrez 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

Je voulais un outil comme dans libfile.a sous Unix.
L'équivalent Windows est lib.exe / list libfile.lib .

LIB.EXE est le bibliothécaire de VS

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

(comme libtool sous Unix)

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

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

Obtenez l’un des packages Visual Studio; C ++

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

2) Entrez la commande suivante:

dumpbin / EXPORTS mon_nom_lib.lib

Comme cela peut être vu dans d'autres réponses, vous devrez ouvrir une invite de commande de développeur proposée dans votre version de Visual Studio pour que dumpbin.exe soit présent 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 affichera ces symboles, mais également une quantité incroyablement énorme d’autres symboles. Vous devez donc les filtrer, éventuellement avec un tuyau vers findstr (si vous voulez un outil MS-Windows) ou grep .

La recherche du mot clé Static à l'aide de l'un de ces outils semble être un bon indice.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top