« DLLを読み込めないという問題(3) | トップページ | 計画を立て直す »

2010年9月28日 (火)

DLLを読み込めないという問題(解決)

連日 blog に書いてきた問題が解決しました。

要点をまとめると次のようになります。(Visual Studio 2005を使用している場合です)

  1. 原因を究明するためには、エラーメッセージを丹念に追え。
  2. カレントディレクトリにDLLを配置したのにDllNotFoundExceptionが発生する場合は、そのDLLが動くために必要な他のDLLが不足している可能性がある。
  3. 必要なDLLを分析するには Dependency Walker を使えばよい。
    • Dependency Walkerは開発したプログラムが動作するターゲット環境で使用すること。これ大切。(開発用のPC上で動かしても意味がない。)
  4. Dependency Walkerで分析した結果、不足するDLLにMSVCR80D.DLLが含まれている場合、そのDLLはDebugモードでビルドされたもの。Releaseモードでビルドしなおそう。
    • MSVCR80D.DLLは再配布禁止なので、ネット上で探してもダウンロードできないはず。
    • MSVCR80.DLLが不足している場合は、再配布可能パッケージをインストールすればよい。
  5. DLL開発時はDLLをテストするためだけの単体プログラムを別途用意しておくこと。
  6. DebugモードでビルドしたDLLなら単体テストがOKなのに、Releaseモードでビルドすると単体テストがNGになる場合、コンパイラオプションやリンカオプションがReleaseモードでも正しく設定されているか確認する。
    • とくに、リンカオプションでモジュール定義ファイルが設定されているか確認すること。

プログラムの動きとしてはまだ不満なところがありますが、DLLが読み込めないという問題に関してはこれで解決できました。

|

« DLLを読み込めないという問題(3) | トップページ | 計画を立て直す »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/167990/49591550

この記事へのトラックバック一覧です: DLLを読み込めないという問題(解決):

« DLLを読み込めないという問題(3) | トップページ | 計画を立て直す »