C++ プラグイン システムにとって安全なものは何ですか? 質問する

C++ プラグイン システムにとって安全なものは何ですか? 質問する

C++ のプラグイン システムは、ABI が適切に定義されておらず、各コンパイラ (またはそのバージョン) が独自のルールに従うため、困難です。ただし、Windows 上の COM は、さまざまなコンパイラを使用するプログラマがシンプルなインターフェイスを使用してホスト アプリケーション用のプラグインを作成できる、最小限のプラグイン システムを作成できることを示しています。

現実的に考えてみましょう。この点ではあまり役に立たない C++ 標準については、しばらく脇に置いておきましょう。C++ プラグインをサポートする Windows および Mac (およびオプションで Linux) 用のアプリを作成し、プラグイン作成者にかなり幅広いコンパイラーの選択肢 (たとえば、2 年未満のバージョンの Visual C++、GCC、または Intel の C++ コンパイラー) を提供したい場合、C++ のどの機能を頼りにすればよいでしょうか。

もちろん、プラグインは特定のプラットフォーム用に作成されるものと想定しています。

頭に浮かんだ C++ の機能と、その答えをいくつか挙げます。

  • vtable レイアウト、抽象クラスを通じてオブジェクトを使用するには? (はい)
  • 組み込み型、ポインター? (はい)
  • 構造体、共用体? (はい)
  • 例外はありますか?(いいえ)
  • extern "C" 関数ですか? (はい)
  • 組み込みパラメータ型を持つ非 extern "C" 関数を stdcall しますか? (はい)
  • ユーザー定義のパラメータ型を持つ、非 stdcall 非 extern "C" 関数ですか? (いいえ)

その分野での経験があれば、ぜひ共有していただければ幸いです。C++ プラグイン システムを備えた、そこそこ成功したアプリをご存知でしたら、それも素晴らしいと思います。

カール

ベストアンサー1

ドクター・ドブのジャーナルに記事がある独自のプラグイン フレームワークの構築: パート 1これは、このテーマに関する非常に良い読み物です。これは、C/C++ クロスプラットフォーム プラグイン フレームワークのアーキテクチャ、開発、および展開を網羅した一連の記事の始まりです。

おすすめ記事