plugin_name.so(通常通り)から関数を動的にロードすることで、プラグインシステムを実装したプログラムがあります。GCC/Linux:.soに静的ライブラリを追加していますか?
しかし、私はプラグインのメインプログラムとメイン関数の両方から関数を使用する静的な "ヘルパー"ライブラリ(helper.aと呼ぶことができます)を持っています。彼らはどんな方法でも相互運用する必要はなく、テキスト操作などのためのヘルパー関数です。
このプログラムは、一度起動すると再読み込みや再起動ができないため、メインプログラムからではなく、プラグインから新しい "ヘルパー"機能を期待しています。
私のクエストは..soの "プラグイン関数コード"をメインプログラムとは違う(おそらくもっと新しい)バージョンの "ヘルパー"を使うように強制できますか?
どうすればいいですか?おそらく静的にリンクしたり、helper.aをplugin_name.soに追加することによって、
私は、メインプログラムから新しいヘルパーライブラリを使用したくないと思っています。新しいプラグインを新しい/優れたヘルパーライブラリにリンクしたいだけです。 – conejoroy
ヘルパー機能にダイナミックリンクを使用できない理由はありますか? –
が一度起動すると、メインプログラムは実行を停止することができず、新しいヘルパーをリロードすることさえできません。プログラムはプラグインのプレースホルダなので基本ヘルパー機能が必要です。だから私は、新しい/改良されたヘルパーライブラリや拡張ヘルパーライブラリがあれば、プラグイン全体をもう一度コンパイルすることを好む。 2つの.so(プラグインとそのプラグインが使用する最新のヘルパー)よりも1つの.so(プラグイン)を配布するほうが現実的だと思います – conejoroy