Windowsで他人のライブラリをビルドして使用する場合など、
サンプルソースを動かしてみたら関数が未解決でリンクエラー…どのlibファイルをリンクすりゃいいんだ?
………なんて経験があると思います。今回はこの解消法をご紹介します。
ここではVisual Studioを使っていることを前提とします。
Visual Studioでは、使用するlibをプロジェクトのプロパティ→[リンカー]→[入力]→[追加の依存ファイル]に指定する必要がありますが、サンプルソースの関数がどのlibファイルに含まれているのかわからん!!といった場合は以下の方法を使います。
Visual Studioの開発者用コマンドプロンプトを開く
スタートメニューから開いてください。
例)Visual Studio 2017 (Community)の場合では「開発者コマンド プロンプト for VS 2017」という名前でした。
libファイルの内容をダンプする
libファイル群があるフォルダまで移動して、以下のコマンドを実行してダンプします。
link /dump /exports *.lib>liblist.txt
liblist.txtの内容を確認
あとは普通にテキストエディタでliblist.txtをオープンし、使いたい関数名で検索するだけ。liblist.txtの内容はこんな内容になっているはずです。
Dump of file maincore300.lib File Type: LIBRARY Exports ordinal name ??abcfunc@@@QAE@ABV01@@Z (public: __thiscall abcfunc()) : ??targetfunc@....
探したい関数がtargetfuncだったとすると、それが含まれるlibファイルはmaincore300.libということになります。