私は持っていA.DLLますB.DLL
A.DLLVS 2010 を使用して、プロジェクトの C++ 関数にブレークポイントを設定し、procexp.exeを使用して現在読み込まれている DLL を確認しました。明らかに、A.DLLロードされています。
B.DLLこの関数から呼び出す必要があります。注:B.DLLにはライブラリ依存関係がありA.DLLます。このライブラリはA.LIB
を使用してLoadLibrary、次のステートメントを実行します。
HANDLE hLib = LoadLibrary("B.DLL");
この行が実行された後、procexp.exeをもう一度確認します。A.DLL2回ロードされます!! A.LIBへの依存関係を削除するとB.DLL、これは発生しません。A.DLLProcess Explorer は、 の 2 つのインスタンスが異なるベース アドレスを持っているため、実際には異なるモジュールであると報告しています。
私の質問は、なぜこれがの別のインスタンスをロードするのA.DLLですか? A.DLLすでにロードされていることに気付くことは可能ですか?