web-dev-qa-db-ja.com

Windowsライブラリ(* .lib)の内容を表示する方法

バイナリファイル-Windows静的ライブラリ(* .lib)があります。
そのライブラリから関数の名前とインターフェースを見つける簡単な方法はありますか?

emfarおよびelfdumpユーティリティ(Linuxシステム)に似たもの

159
Nick Borodulin

静的ライブラリについて話していると仮定すると、DUMPBIN /SYMBOLSはライブラリ内の関数とデータオブジェクトを表示します。インポートライブラリ(DLLからエクスポートされたシンボルを参照するために使用される.lib)について話している場合、DUMPBIN /EXPORTSが必要です。

「C」バイナリインターフェイスにリンクされた関数の場合、これはまだ値、パラメーター、または呼び出し規約を返しません。その情報は.libにまったくエンコードされていません。正しく呼び出すためには、事前に(たとえば、ヘッダーファイルのプロトタイプを使用して)そのことを知っておく必要があります。

C++バイナリインターフェイスにリンクされた関数の場合、呼び出し規約と引数は関数のエクスポートされた名前(「名前マングリング」とも呼ばれます)でエンコードされます。 DUMPBIN /SYMBOLSは、「マングルされた」関数名とデコードされたパラメーターセットの両方を表示します。

178
Tim Lesher

ビジュアルコマンドコンソールを開きます(Visual Studioコマンドプロンプト)

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

または

lib /LIST openssl.x86.lib

または7-Zipで開く :)そのARアーカイブ

80
Tanguy

Unixでar t libfile.aのようなツールが欲しかった。
同等のウィンドウはlib.exe /list libfile.libです。

20
lgwest

LIB.EXEはVSの司書です

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

(Unixのlibtoolなど)

13
Lou Franco

「dumpbin -exports」はdllでは機能しますが、libでは機能しない場合があります。 libの場合、「dumpbin -linkermember」または単に「dumpbin -linkermember:1」を使用できます。

13
Frank

DUMPBIN /EXPORTSその情報のほとんどを取得し、MSDNを押すと残りを取得します。

Visual Studioパッケージの1つを入手します。 C++

12
jim

1)VS 2017(またはマシンにあるバージョン)の開発者コマンドプロンプトを開きます(スタートメニュー->すべてのプログラム-> Visual Studio 2017(またはマシンにあるバージョン)にあります) -> Visual Studioツール-> VS 2017の開発者コマンドプロンプト。

2)次のコマンドを入力します。

dumpbin /EXPORTS my_lib_name.lib

3
user3292568

他の回答で見られるように、Visual Studioのバージョンで提供される開発者コマンドプロンプトを開いて、実行パスにdumpbin.exeを含める必要があります。それ以外の場合は、必要な環境変数を手動で設定できます。

dumpbin /EXPORTS yourlibrary.libは通常、シンボルの小さなリストのみを表示します。多くの場合、ライブラリがエクスポートする関数は表示されません。

dumpbin /SYMBOLS /EXPORTS yourlibrary.libはそのシンボルを表示しますが、非常に多くの他のシンボルも表示します。そのため、おそらくfindstr(MS-Windowsツールが必要な場合)またはgrepへのパイプを使用して、それらをフィルタリングする必要がありました。

これらのツールのいずれかを使用してStaticキーワードを検索することは、良いヒントのようです。

1