exeの変数をDLLで参照するには


saku  2004-11-25 22:54:33  No: 55347

こんにちは。

VC++.NET 2003を使って開発をしています。
exeで宣言してある変数を
DLL側で参照したいのですが
DLLにパラメータで渡す以外にどんな方法があるのですか?
共有メモリとかになるのでしょうか?


克己  2004-11-26 07:41:47  No: 55348

DLLは文字通りダイナミックにリンクされ、EXEと同一アプリとして実行されます
すなわち実行空間が同一ということであり、パラメタでアドレスを指定すれば、それがいくらでも参照できます
ですので、参照したい変数をすべてひとつの構造体で定義しておき、そのアドレスを渡すのが一般的です

と上記は、ひとつのEXEのみ使用する場合ですが、それではDLLである必然性がありません
DLLは、複数のEXEから呼び出されて初めて真価を発揮します

複数のEXEが同一のDLLを呼び出しても、各DLLは、別の空間(すなわち各EXEの実行空間)で実行されるため、DLL間でデータの共有ができません
こういう場合にはじめて、共有メモリ、レジストリ、socket、DDE、等他プロセスとの連携技術が必要になります
簡単に説明しますので、目的の技術を学んでください

レジストリ:変数の数が少ない場合(数個)最も実装が容易
共有メモリ:変数の数が多い場合これを使用するが、アクセスするたびに排他処理必須となる
socket:他のマシンとも共有が可能だが、実装が面倒、遅延も発生する
DDE:現在はあまり利用されない(と思う)

これらを理解し、DLLの目的別に実装法を決定してください


なーめ  2004-12-05 12:36:19  No: 55349

細かいことは忘れて、
COM+ を勉強してください。
せっかく .NET なんだから。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加