|
.NET TIPS 実行プログラムやライブラリ(DLLファイル)の依存関係を確認するには?デジタルアドバンテージ 岸本 真二郎2009/04/16 |
![]() |
|
|
|
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ファイルの依存関係が分かる。
![]() |
| Dependency Walkerの実行画面 |
| ウィンドウの左上のペインにあるツリーから、NTidy(NTIDY.DLL)の利用にはMSVCP71.DLLとMSVCR71.DLLが必要であると分かる。また、ウィンドウ中ほどでは、DWMAPI.DLL(MSCORE.DDL内で参照)が存在しないことが示されている。 |
外部のDLLファイルを利用している場合に、アプリケーション実行時に身に覚えのないFileNotFound例外が発生した場合は、DLLファイルの依存関係を疑ってみるとよいだろう。![]()
| カテゴリ:開発環境&ツール 処理対象:ツール 使用ライブラリ:DllImport属性(System.Runtime.InteropServices名前空間) 使用ライブラリ:FileNotFound例外(System名前空間) 関連TIPS:HTMLファイルを簡単に解析するには? |
|
||||||||||||||||||||
| 「.NET TIPS」 |
- .NET TIPS - .NET開発のテクニックとヒント集 - (2010/7/29)
− MVCでルート・パラメータに制約条件を追加するには?
− Stopwatchクラスをリセットして再開するには?
− マウス・ホイールによるズーム操作を無効にするには? - Visual Studio 2010の新機能「IntelliTrace」 (2010/7/28)
VS 2010で最も注目されている新機能「IntelliTrace」を活用して、アプリケーションの実行ログを記録してデバッグする方法を解説する - Entity Framework 4でコード・ファースト開発 (2010/7/26)
EF4ではモデルとなるデータ格納用のクラスを定義すれば、そこからDBやテーブルを自動生成できる。その手順をWebアプリを作りながら解説 - .NET TIPS - .NET開発のテクニックとヒント集 - (2010/7/22)
− Azureアプリをポータル・サイトからデプロイするには?
− Visual StudioのコードをHTML形式でコピーするには?
− WindowsフォームでChartコントロールを使用するには?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報










