2011-10-24 3 views
0

DLLの複数のインスタンスを明示的に(つまりLoadLibrary呼び出しで)読み込む方法があるのだろうかと思っていました。通常、プロセスは、LoadLibraryが呼び出されたとき(つまり、ライブラリの1つのコピーがプロセスのメモリに存在するように)、DLLを1回ロードします。その結果、同じライブラリに対してLoadLibraryを呼び出すと、最初の呼び出しによって返されます。具体的には、プロセスの内部で作成されたスレッドごとに個別のDLLインスタンスをロードできるようにしたいと考えています。現在、各スレッドでLoadLibraryを実行すると、プロセスのアドレス空間にあるライブラリの1つのインスタンスに同じポインタが取得され、実際にはすべてのスレッドがライブラリの同じ関数を参照します(ここでは大きな混乱が発生します私のアプリで)。代わりに、ライブラリから関数を呼び出すときにスレッドが互いに干渉しないように、各スレッドが個別のメモリ空間にライブラリの個々のインスタンスを作成するようにします。mfcで動的DLLの複数のインスタンスを読み込む方法

答えて

0

新しいプロセスを作成してそのプロセスでDLLをロードするまで、これは可能ではないと思います。 DLLはプロセスレベルでロードされます(したがって、プロセス制御ブロックにエントリがあります)。 DLLは、DLLMainメソッドでTLS固有のデータを初期化できるように、ホストアプリケーションで新しいスレッドが作成されたかどうかを検出できますが、

+0

Ankur:あなたの説明のためにいくつかのサンプルを提供できますか? – karthik

+0

DllMainのドキュメントは、http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583(v=vs.85).aspxを参照してください。特に備考セクション – Ankur

+0

Ankur:私の目的は、同じdllに対して多くのインスタンスを作成することです。 – karthik

関連する問題