私はこれまで同様の質問がされていることは知っていますが、それでも私には明らかではありません。DLLアクセスアプリケーションのデータ
私のアプリケーションには、ある種のグラフを表すためのクラス、例えばClassAppGraph
があります。私はClassAppGraph
のオブジェクトを解析し何かを行うDLLを書く必要があります。
私のDLLは、アプリケーションからClassAppGraph
のオブジェクトにどのようにアクセスできますか?
私はこのオブジェクトへのポインタをDLLからアプリケーションに送ることができますが、そのDLLがクラスの外観をどのように知っていますか、そのデータメンバーと関数は何ですか?アプリケーションクラスの宣言を含むDLLプロジェクトに.hファイルを含めましたか?
このような状況で他にどのような設計ができますか?
ランタイム環境では、クラス定義が両側で同じであるという妥当性検査はありません。これは、クラスバージョンと多くの微妙なこと(デフォルトの呼び出し規約、フィールドパッキング、その他のコンパイラフラグなど)の不一致が、対話によってエクスポートされたオブジェクトのDLLビューを破壊する可能性があることを意味します。 –
アプリケーションとDLLの両方がOPによって書き込まれたようです。アプリケーションがまだ静的なlibとリンクしているので、私はバージョンの競合が問題になるとは思わない。 –
@Cred King:インスタンスをグローバルにアクセス可能にすることは、オブジェクトをDLLに公開する唯一のオプションですか?オブジェクトのポインタをDLL内の関数のパラメータとして渡せませんか? – Ritesh