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


181

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

emfarelfdumpユーティリティに類似したもの(Linuxシステム上)?


1
注:.NET固有のコマンドプロンプトはVisual Studioエディションに付属していますが、Expressエディションには付属していません。From:social.msdn.microsoft.com/Forums/en-US/...
isgoed

回答:


199

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

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

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


6
/ SYMBOLSと/ EXPORTSはどちらも現在は機能しません。.libファイル内のすべての関数を表示するには、| moreパイプで/ ALLを使用する必要があります。
user5280911

100

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

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

または

lib /LIST openssl.x86.lib

または単に7-zipで開きます :)そのARアーカイブ


19
7-zipのクールなトリックには、2つの.txtファイルがあるようですが、どういう意味ですか?
ダミアン

21

ar t libfile.aUNIXのようなツールが欲しかった。
対応するウィンドウはlib.exe /list libfile.libです。


4
はい、libは(のみ)objファイルを表示します。objファイルの関数とデータは表示されません。
user34660 2016

14

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



13

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

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


3

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

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

dumpbin /EXPORTS my_lib_name.lib


2

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.