現在のアプリケーションは、複数のページを含む単一のOpenGL EXEです。 EXEは、UDP経由でネットワーク経由で送信されたデータにアクセスする役割を担います。データを蓄積し、シングルトン構造のホストに格納します。 EXE内の個々のページは、シングルトン構造にアクセスして、データが適切に処理されるように処理します。1つまたは複数のDLLにEXEデータを渡す
EXEフットプリントを軽くし、構成管理の試みをサポートするため、EXEがロードする単一のDLLにページを分割することにしました。 EXEをDLLからのページが読み込まれるシェルにすることが私たちの意図です。 EXEは引き続きすべての通信責任(UDP、Corba、Userなど)を持ちます。これらのページは、それが何であれ表示する責任があります。
質問(最終的に)は次のようになります。EXEから収集された無数のデータを消費するDLLベースのページにどのように渡すのですか。シングルトンのコンセプトは、私たちが使用するシングルトン(ACE_Singleton)がこのレベルの方向を許さないので、もはや水を保持しません。私たちはシングルトンをDLLから消費しているEXEに一日中エクスポートすることができますが、私はまだその逆を理解していません。私は、次のオプションが出ている - 私が好きどれも、ので、私はそこに誰かがよりよいものを持っているでしょう期待していた:)
- 別のDLLに、現在別のシングルトンに格納されているすべてのデータをラップそれは「真の」シングルトンを輸出するだろう。例えば。 DLLからエクスポートされたシングルトンは、EXEがロードしたものとは無関係に、共有メモリのようなものです。これは興味深い選択ですが、展開シナリオの問題を引き起こします。私は、人々がこのアイデアで本当に打ち負かされるならば、それらの問題について詳しく説明することができます。
- すべての関連データを含む静的DLLレベル構造を作成します。 EXEはDLLロード時にこのデータをDLLにプッシュし、DLLに含まれるページがデータにアクセスできるようにします。これは、最も単純なソリューションのように思えます。たとえそれがアプリケーション内のすべてのページを編集していても、100以上です。すべてのデータはまさにグローバルにあります。それほどセクシーではない、あるいはC++ yでも。
この問題の解決策が他にありますか?
アプリケーションは、Windows XPで使用するためにVisual C++ 9.0(VisualStudio 2008)を使用して記述されています。何らかの理由で、たとえ私たちの顧客がそれを使用していても、まだVistaは私たちのラボではサポートされていません。