放浪猫

主にガジェットとかの雑記

Windows10以降で.exeや.dllの依存関係を調べる方法( Dependencies )

お久しぶりです、ゆきしろです。

他人が開発した.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 ++再頒布可能パッケージをインストールする

support.microsoft.com

 

2.DependenciesGui.exeを起動する(GUI版)

※Dependencies.exeはCUI版。

 

3.メニュー > File > Openからエラー吐いてる.exeを指定して実行する。

・砂時計アイコン:後からロードされるライブラリ。気にしなくていい。

・赤いアイコン:Windows上では実装されていない関数がある。関数画面で任意の赤いアイコンをクリックすると、それぞれのDLLに対応するはずの関数が欠落しているのがわかる。

・?アイコン:検索先に見つからなかった。
  対処:メニュー > Options > customize search folders から検索先の設定を変更。もしくはモジュール追加する。

 

簡単!

 

以下余談。

git bashから lddコマンド叩けば一応依存ファイル追いかけることはできるけど、不明な参照は ??? -> ??? みたいな1ミリも情報が得られないから、参照エラーがあるときはお勧めしない。

逆に、dllや参照ファイルが明確に足りていて、何に依存しているか確認したい時はコマンドの方が早いかも。