How to See the Contents of Windows library (*.lib)
Asked Answered
T

8

235

I have a binary file - Windows static library (*.lib).
Is there a simple way to find out names of the functions and their interface from that library ?

Something similar to emfar and elfdump utilities (on Linux systems) ?

Transcendentalistic answered 20/11, 2008 at 13:25 Comment(1)
Note: The command prompt specific to .NET comes with the Visual Studio editions but not with the Express edition. From: social.msdn.microsoft.com/Forums/en-US/…Tiedeman
F
241

Assuming you're talking about a static library, DUMPBIN /SYMBOLS shows the functions and data objects in the library. If you're talking about an import library (a .lib used to refer to symbols exported from a DLL), then you want DUMPBIN /EXPORTS.

Note that for functions linked with the "C" binary interface, this still won't get you return values, parameters, or calling convention. That information isn't encoded in the .lib at all; you have to know that ahead of time (via prototypes in header files, for example) in order to call them correctly.

For functions linked with the C++ binary interface, the calling convention and arguments are encoded in the exported name of the function (also called "name mangling"). DUMPBIN /SYMBOLS will show you both the "mangled" function name as well as the decoded set of parameters.

Fascinating answered 20/11, 2008 at 14:31 Comment(7)
Both /SYMBOLS and /EXPORTS don't work nowadays. I have to use /ALL with a |more pipe to see all functions in the .lib file.Sestertium
@Sestertium dumpbin /symbols worked fine for me today on Win 10 with VS 2019 developer command prompt on a static library .lib file, why do you say it doesn't work these days?Inappetence
You can use /OUT:filename in order to export the output to a fileApodaca
What is DUMPBIN ? Where is it ?Feculent
Dumpbin is a command line app that's installed alongside VS. From within VS you can access it via Tools > Command Line > Developer Command Prompt. Then type "dumpbin"Weisburgh
dumpbin /exports does not show __imp__calloc in ucrt.lib for example (although the reference arises in user code), dumpbin /linkermember:1 does show it ... Hint: Use | find /i "calloc" to filter the symbols you search for.Whiffler
FWIW dumpbin appears not to be available in the Developer Command Prompt for Visual Studio 2022.Goodfellowship
S
137

Open a Visual Studio Command Prompt

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

or

lib /LIST openssl.x86.lib

or just open it with 7-zip :) its an AR archive

Sparker answered 1/11, 2014 at 13:16 Comment(2)
Cool trick with 7-zip there seems to be two .txt files there what do they mean?Klee
These both just list a load of DLL names. dumpbin /exports lists the actual symbols.Vestryman
A
22

I wanted a tool like ar t libfile.a in unix.
The windows equivalent is lib.exe /list libfile.lib.

Anana answered 20/1, 2011 at 20:35 Comment(1)
Yes lib will (only) show the obj files; it will not show the functions and data in the obj files.Lewison
S
20

"dumpbin -exports" works for dll, but sometimes may not work for lib. For lib we can use "dumpbin -linkermember" or just "dumpbin -linkermember:1".

Subito answered 10/2, 2017 at 20:12 Comment(0)
O
16

LIB.EXE is the librarian for VS

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

(like libtool on Unix)

Officious answered 20/11, 2008 at 14:16 Comment(0)
R
15

DUMPBIN /EXPORTS Will get most of that information and hitting MSDN will get the rest.

Get one of the Visual Studio packages; C++

Raccoon answered 20/11, 2008 at 13:46 Comment(0)
C
5

Like it can be seen in other answers you'll have to open a Developer Command Prompt offered in your version of Visual Studio to have dumpbin.exe in your execution path. Otherwise, you can set the necessary environment variables by hand.

dumpbin /EXPORTS yourlibrary.lib will usually show just a tiny list of symbols. In many cases, it won't show the functions the library exports.

dumpbin /SYMBOLS /EXPORTS yourlibrary.lib will show that symbols, but also an incredibly huge amount of other symbos. So, you got to filter them, possibly with a pipe to findstr (if you want a MS-Windows tool), or grep.

Searching the Static keyword using one of these tools seems to be a good hint.

Chambliss answered 31/1, 2019 at 12:47 Comment(0)
L
4

1) Open a Developer Command Prompt for VS 2017 (or whatever version you have on your machine)(It should be located under: Start menu --> All programs --> Visual Studio 2017 (or whatever version you have on your machine) --> Visual Studio Tools --> Developer Command Prompt for VS 2017.

2) Enter the following command:

dumpbin /EXPORTS my_lib_name.lib

Levator answered 11/2, 2014 at 13:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.