質問

現在、TCP/IP、UDP/IP、USBなどのコアへの通信フォームを提供するサービスプラグインを許可するコードがあります...これらのサービスプラグインフィードバックNotifierクラスインスタンスは、さらに処理するためにコアにフィードバックします。

現在の実装では、サービスプロジェクト(DlopenとFriendsを介してCoreが実行時に持ち込んだ別の動的にリンクされたライブラリです)は、コアソースコード(個別のプロジェクト)にあるNotifier.cppファイルに対してコンパイルされます。これにより、Notifiersメソッドの実装にアクセスできます。これは完全に機能しません。

2つの代替オプション:1。notifierメソッドの実装をヘッダーファイルに配置します。 2. notifierメソッドを仮想と遅延バインディングを実行時に宣言します。

計算オーバーヘッドの問題を回避するオプション2の影響は何ですか?

私たちが利用できる他のオプションはありますか?

ありがとう

役に立ちましたか?

解決

はい、純粋な仮想関数を使用したインターフェイスを消費者に公開することは、Windows DLLからC ++オブジェクトを公開する標準的な方法です。クライアントは、実装の詳細を認識していません。メンバー変数、メンバー関数本体なし、仮想レイアウトのみ。

(参照カウントと言語と存在するバージョンを追加します dynamic_cast, 、これを呼び出します QueryInterface, 、そしてあなたはcomを持っています、それはWindowsに広まっています)

この手法は、 *nix共有ライブラリでもうまく機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top