この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
DllImport属性(System.Runtime.InteropServices名前空間)を使って、Win32 APIレベルのネイティブな既存のライブラリを利用する際に、参照先のDLLファイルがさらに別のDLLファイルを参照している場合がある。
例えば、「TIPS:HTMLファイルを簡単に解析するには?」で紹介している「NTidy」は、ソース・コードがC/C++で記述されている(配布されているバイナリはVisual Studio 2003でビルドされているもよう)。そのため、このライブラリを利用するには、実はC/C++のランタイム・ライブラリである、MSVCP71.DLLやMSVCR71.DLLが実行時に必要となる。
すべての必要なDLLファイルがそろっていない環境で、このようなライブラリを利用する.NETのアプリケーションを実行した際には、FileNotFoundException(ファイルが見つからない)という例外が発生する。しかし、このメッセージだけでは、DLLファイルの依存関係に原因があることに気付きにくい。
「Dependency Walker」は、このようなDLLファイルの依存関係を表示する、Microsoft社製の無償のツールである(Visual Studio 2005ではVisual Studioがインストールされたフォルダの「Common7\Tools\bin\Depends.Exe」にインストールされる)。Dependency Walkerを起動し、アプリケーションやDLLファイルをドラッグ&ドロップすると、DLLファイルの依存関係が分かる。
Copyright© Digital Advantage Corp. All Rights Reserved.