C ++のプラグインシステムは、ABIが適切に定義されておらず、各コンパイラ(またはそのバージョン)が独自のルールに従っているため、困難です。ただし、Windows上のCOMは、さまざまなコンパイラを使用するプログラマーが単純なインターフェイスを使用してホストアプリケーションのプラグインを作成できる最小限のプラグインシステムを作成できることを示しています。
実用的にして、この点ではあまり役に立たないC++標準を少し脇に置いておきましょう。C ++プラグインをサポートするWindowsおよびMac(およびオプションでLinux)用のアプリを作成したい場合、およびプラグインの作成者に適度に多くのコンパイラー(たとえば、2年未満のバージョンのVisual C ++)を提供したい場合、GCCまたはIntelのC ++コンパイラ)、C ++のどの機能を信頼できますか?
もちろん、プラグインは特定のプラットフォーム用に作成されると思います。
私の頭から離れて、ここに私が考えることができるいくつかのC ++機能があります、そして私が思うのは答えです:
- vtableレイアウト、抽象クラスを介してオブジェクトを使用するには?(はい)
- 組み込み型、ポインタ?(はい)
- 構造体、組合?(はい)
- 例外?(いいえ)
- extern "C"関数?(はい)
- 組み込みパラメーター型を持つstdcall非外部「C」関数?(はい)
- 非stdcall非extern「C」関数とユーザー定義のパラメータータイプ?(いいえ)
その分野での経験を共有していただければ幸いです。C ++プラグインシステムを備えた適度に成功したアプリを知っているなら、それもクールです。
カール