質問

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

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

役に立ちましたか?

解決

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

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

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

他のヒント

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

dumpbin /ARCHIVEMEMBERS openssl.x86.lib

または

lib /LIST openssl.x86.lib

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

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

LIB.EXEはVSの司書です

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

(Unixのlibtoolなど)

" dumpbin -exports" dllでは動作しますが、libでは動作しない場合があります。 libには" dumpbin -linkermember"を使用できます。または単に" dumpbin -linkermember:1"。

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

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

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

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

dumpbin / EXPORTS my_lib_name.lib

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top