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