.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ファイルの依存関係を疑ってみるとよいだろう。End of Article

カテゴリ:開発環境&ツール 処理対象:ツール
使用ライブラリ:DllImport属性(System.Runtime.InteropServices名前空間)
使用ライブラリ:FileNotFound例外(System名前空間)
関連TIPS:HTMLファイルを簡単に解析するには?

この記事と関連性の高い別の.NET TIPS
アプリケーションのEXEファイルやDLLファイルを1つにまとめるには?
Win32 APIやDLL関数に構造体を渡すには?
Win32 APIやDLL関数に文字列や文字列バッファを渡すには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Kinectが切り開く“夢の近未来” (2012/2/2)
     日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか?
  • 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
     アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する
  • SQL Azure Data Sync入門 (2012/1/30)
     SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説
  • Windows Phoneアプリ市場の現状を分析する (2012/1/27)
     Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH