• ベストアンサー

DLL のロードの順序

ある EXE(DLL) に暗黙リンクされている複数の DLL があるとき、これらの DLL がロードされる順番はどのようにして設定できるのでしょうか? 具体的には EXE を起動したときに、暗黙リンクされているシステム DLL がロードされるより前に、自作の DLL をロードしたいのです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

リンカに指定した順みたいですね。

noname#9589
質問者

お礼

ありがとうございました

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> EXE を起動したときに、暗黙リンクされているシステム DLL がロードされるより前に、自作の DLL をロードしたいのです。 DLLのロード順は、 1. 実行可能ファイル (EXE) を含むディレクトリ 2. カレント ディレクトリ 3. Microsoft(R) Windows NT(R) の場合 Windows の 32 ビット システム ディレクトリ (通常は \WINNT35\SYSTEM32) Windows の 16 ビット システム ディレクトリ (通常は \WINNT35\SYSTEM) Microsoft(R) Windows(R) 95 の場合 Windows のシステム ディレクトリ (通常は \WINDOWS\SYSTEM) 4. Windows ディレクトリ (通常は \WINNT35 または \Windows) 5. 環境変数 PATH に設定されているディレクトリ 408409 [VB4] DLL が読み込めない原因と対処方法 http://support.microsoft.com/default.aspx?scid=kb;ja;408409 となっていますので、EXEと同じ場所に自作DLLを置いておけば、そちらがロードされるハズ。 もっと汎用のWindows起動後にロードされるようなDLLがDLLキャッシュなどから読まれている場合には…ちょっとわかりません。

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;408409
noname#9589
質問者

補足

ええと、DLL のパスの検索順ではなく、リンクされている DLL のロード順ということです。 A.EXE に B.DLL, C.DLL がリンクされているときに、必ず B.DLL が先にロードされるようにしたいということなのです。

関連するQ&A

専門家に質問してみよう