私のアプリケーションには、ユーザーが実行時にロードされる独自のプラグインを作成できるプラグインシステムがあります。通常、これは問題ありませんが、場合によっては、2つのプラグインが同じライブラリを使用するため、これら2つのプラグイン間で衝突が発生します。
例:
プラグインAはJSONを操作するためにTouchJSONを使用したいので、作成者はTouchJSONコードをプラグインソースに追加し、コンパイルされてプラグインバイナリにリンクされます。後でプラグインBも同じライブラリを使用したいと考えており、まったく同じことを行います。これで、アプリがこれら2つの異なるプラグインをロードすると、これが検出され、次のような警告が表示されます。
クラスCJSONScannerは、[path_to_plugin_a]と[path_to_plugin_b]の両方に実装されています。2つのうちの1つが使用されます。どちらが未定義です。
私のアプリはプラグインをロードするだけで、それらが特定のプロトコルに準拠していることを確認するため、ロードするプラグインと、2つ以上が同じライブラリを使用するかどうかを制御できません。
両方のプラグインがまったく同じバージョンのライブラリを使用している限り、これはおそらく機能しますが、1つのプラグインでAPIが変更されるとすぐに、多くの問題が発生します。
これについて私にできることはありますか?