- ベストアンサー
DLL のロードの順序
ある EXE(DLL) に暗黙リンクされている複数の DLL があるとき、これらの DLL がロードされる順番はどのようにして設定できるのでしょうか? 具体的には EXE を起動したときに、暗黙リンクされているシステム DLL がロードされるより前に、自作の DLL をロードしたいのです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
リンカに指定した順みたいですね。
その他の回答 (1)
- neKo_deux
- ベストアンサー率44% (5541/12319)
> 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キャッシュなどから読まれている場合には…ちょっとわかりません。
補足
ええと、DLL のパスの検索順ではなく、リンクされている DLL のロード順ということです。 A.EXE に B.DLL, C.DLL がリンクされているときに、必ず B.DLL が先にロードされるようにしたいということなのです。
お礼
ありがとうございました