- - PR -
Dllのインスタンス取得について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-03-09 08:00
いつもお世話になってます。
レギュラーDllを使っていて、それをあるEXEファイルから呼び出しています。 このDLLの中でそれ自身のインスタンスを取得したいときにはどのようにすればいいのでしょうか? たとえば、GetModuleHandle("そのDLL自身の名前")にてインスタンスを取得できますが、 もともと自身のファイルであるため、名前をあげなくても呼び出し方があるのではないかと考えています。 そのような方法はありますでしょうか? よろしくおねがいします。 | ||||
|
投稿日時: 2009-03-09 10:01
単純に、DllMain の引数をグローバル変数に保存しとく。
というのはどうでしょう。 | ||||
|
投稿日時: 2009-03-09 13:54
拡張DLLの場合、DLLMAINがあるのですが、
通常のレギュラーDLLの場合、それがありません。 そのため、最初のインスタンスを手動でとってくる必要があると思うのです。 | ||||
|
投稿日時: 2009-03-09 15:27
こんにちは。
MFCを利用しているレギュラーDLLであれば、DllMainはすでに存在しています。 レギュラー DLL の初期化(msdn) この場合は、 AfxGetInstanceHandle(msdn) もしくは CWinApp::m_hInstance(msdn) で、DLLのハンドルを取得できます。 非MFCの場合は DllMain(msdn)を作成してください。 非 MFC DLL の初期化(msdn) (参考まで) Visual C++ リンカ オプション /ENTRY (エントリ ポイント シンボル)(msdn) VC++のDLLは通常(デフォルトで)、_DllMainCRTStartupがエントリポイントになっており、そこからDllMainが呼び出されるようになっております。 | ||||
|
投稿日時: 2009-03-10 07:03
どんぴしゃな答えありがとうございます。
できました。 initinstanceにて初期化する必要があったんですね。 |
1