技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

DLLから別のDLLを呼び出しているかも→「エラー:ファイルまたはアセンブリ 'hoge.dll'、またはその依存関係の1つが読み込めませんでした。指定されたモジュールが見つかりません。」

表題の通りです。
DLLから更に別のDLLを呼び出している場合があり、その「別のDLL」はエラーメッセージには出力されません。
そのため、必要だと思っているDLLを全て揃えているとしても、エラーメッセージに出力されている'hoge.dll'をexeと同じフォルダに置いているとしても、表題のエラーが出てしまう可能性があります。
 
どのDLLが呼び出されているのか、どのDLLが不足しているのかは、「Dependency Walker」というツールで調べることができます。
ダウンロードの方法や使い方は下記のページで紹介されています。
 
プログラムやDLLの依存関係を調べる「Dependency Walker」

https://webcli.jp/topics/dependencywalker/

 
Dependency Walker でDLLを取り込むと固まるように見えるかもしれませんが、それはそういうものです。
解析には10分ぐらいかかることもあるので、気長に待ちましょう。
 
解析結果はテキストファイルに出力することができます。
テキストファイルの下部には呼び出しているDLLの一覧があり、「指定されたファイルが見つかりません。」と出ているDLLが呼び出せていないDLLです。
ただし、呼び出せなくても問題のないDLLもあったりするので、表題のエラーが出ていないDLLや環境が別にあるなら、そのDLLや環境でも Dependency Walker でテキストファイルを出力し、結果を比べてみると良いでしょう。