タイトル : Re^3: Declareステートメントで定義されたアンマネージdll関数呼出について 投稿日 : 2010/12/29(Wed) 00:01 投稿者 : YuO
やりたいことが見えていませんが……。 > > > 文書毎の個別のdll関数とはなりませんでした。 > > 複数の DLL があって、それぞれを個別に呼び出したいという事でしょうか。 > > だとしたら、Lib 句にフルパスを書いておいてはいかがでしょう。 > えっと、複数のdllというのが伝わりにくかったと思いますが、アンマネージdll関数の一群(これも私が書いたんですが)を基本単位としてクラス(Lib_Fun)を構成し、文書ごとにLib_Funクラスのインスタンスを持たせる方法で用いようとしております。 > 重要なのは、例えば、アプリケーションを多重起動すれば、これはアプリケーションごとに同じdllで動いていても、内部データは別々に持っているということです。 > このとき、用いられているdllは同じですが、インスタンスは多重起動された個数だけ展開されていると考えてよいでしょうか・・・ あるプロセス内でひとつのDLLを何度LoadLibraryしようが,アンロードされない限りDLLは一度だけロードされます。 これは理解されていますでしょうか。 どうも,LoadLibraryすればするだけ,DLLが読み込まれると勘違いされているのではないかと思われます。 アンマネージDLLでCOMを使わずにクラスのようなことがやりたいなら,ハンドルという形にする必要があります。 Create系の関数を用意して内部的には何らかのクラスなり構造体なりをnew等し,それを「ハンドル」という形で返すような実装にしておきます。 他のDLLの関数群は第一引数にハンドルを受け取って,それを元のクラスなり構造体なりにキャストして使う,という形になります。 Win32 APIのGDIなどのAPIを見て,複数のインスタンスを扱うにはどうすればよいのかの手本にすると良いでしょう。 |