お久しぶりです、ゆきしろです。
他人が開発した.exe起動すると●●●●.dllがないって怒られたよ。ふぁっきゅー。
ちょっと前まで●●●●.dllがなくても動いていたよ。
.exeのプロジェクトには何の変更もないよ。
ははーん!さては.exeが参照している他の.dllの参照先が増えやがったなコンチクショウ!一体何の.dllに依存してやがるんだ!!
というわけで今回は.dllの依存関係調査ツールについて。
昔は Dependency Walker(depends.exe)とか使えたんですが、これWindows10で実行すると固まるのでイマイチなんですよね。
というわけで後継の Dependenciesについて。
Dependencies
https://github.com/lucasg/Dependencies
これはDependency WalkerをC#で書き直してOSSにしたやつらしい。
以下手順
---
1.Visual C ++再頒布可能パッケージをインストールする
2.DependenciesGui.exeを起動する(GUI版)
※Dependencies.exeはCUI版。
3.メニュー > File > Openからエラー吐いてる.exeを指定して実行する。
・砂時計アイコン:後からロードされるライブラリ。気にしなくていい。
・赤いアイコン:Windows上では実装されていない関数がある。関数画面で任意の赤いアイコンをクリックすると、それぞれのDLLに対応するはずの関数が欠落しているのがわかる。
・?アイコン:検索先に見つからなかった。
対処:メニュー > Options > customize search folders から検索先の設定を変更。もしくはモジュール追加する。
簡単!
以下余談。
git bashから lddコマンド叩けば一応依存ファイル追いかけることはできるけど、不明な参照は ??? -> ??? みたいな1ミリも情報が得られないから、参照エラーがあるときはお勧めしない。
逆に、dllや参照ファイルが明確に足りていて、何に依存しているか確認したい時はコマンドの方が早いかも。