- ベストアンサー
プラグイン可能なアプリケションの作成
C++でプラグイン可能なアプリケーションを 簡単な方法ってありませんでしょうか? なにか情報がありましたらお願いします。 当方、.NETで使用して作った経験がありますが、 .NETは標準機能としてコードをコンパイルする機能が ありましたので、楽でした。今回は.NET使用しませんので、 自力でやるとなるとすごく時間がかかる割にはほとんど メリットなしなので、何か良い方法ないかと思いまして。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
スクリプトを使いたいとのことですので... この手のコマンドプロセッサには、比較的Tclを使ったものがよく見られます。非常に枯れたプログラムであるので信頼性が高いこと、元々その目的で作られたものなので使い勝手がよいこと、そして一番大きいのはライセンスの条件がゆるいことです。 優れたコマンドプロセッサやインタープリタがあっても、GPLでは使いにくいということも多いでしょうから。
その他の回答 (3)
- buihyaku
- ベストアンサー率29% (97/326)
ここでいうプラグインの意味がよくわかりませんが、スクリプトを実行する機能が必要なのか、単純に機能モジュールを動的に追加したいのかどちらでしょうか。 後者でしたら、プラグインに共通のインタフェースAPI仕様を定義してNo2さんのいうようにDLLにして動的にリンク、関数ポインタを取得してアクセスするのがいいのではないでしょうか。 もしオートメーションに詳しいなら、プラグインをオートメーションサーバーとしてアプリケーションから動的に接続させるのもひとつの手かとおもいます。
- toysmith
- ベストアンサー率37% (570/1525)
手っ取り早いインターフェースならダイナミックリンクライブラリを使うことでしょう。 WindowsのPhotoshopプラグインはDLLで実装してますね。
補足
ありがとうございます。 > WindowsのPhotoshopプラグインはDLLで実装してますね。 勉強になりました。 たぶん、そのようなことはしないかもしれませんが、 勉強のため、もう少し参考になるサイトとかありませんでしょうか?
- jacta
- ベストアンサー率26% (845/3158)
具体的には、どんなものを想定していますか? 標準の範囲でプラグインの機能を実現しようと思うと、やはりファイルからスクリプトを読み込んで、自分でインタープリトするしかありません。 標準からはずれても比較的移植性の高い方法としては、system関数で子プロセスを起動する方法が考えられます。他には、SWIGなどを使ってスクリプト言語と融合させるか、CINTであればC/C++をそのままスクリプトとして使うこともできます。 特定環境に強く依存する方法がよければ、ますは環境を書いてください。 (.NET以外ということしかわかりませんので...)
補足
ご返答ありがとうございます。 > 具体的には、どんなものを想定していますか? 内部機能をユーザーが自由に呼び出せられればいいです。 今のところ、気軽に書けるスクリプトが良いと考えています。 ユーザーに負担にかかるやつはあまり使われない気もします。 誰もが使うものに成長できれば、話は別ですが。 > 標準からはずれても比較的移植性の高い方法としては、system関数で子プロセスを起動する方法が考えられます。他には、SWIGなどを使ってスクリプト言語と融合させるか、CINTであればC/C++をそのままスクリプトとして使うこともできます。 これから調べてみます。 環境はWindows上のみです。
補足
ありがとうございます。 > ここでいうプラグインの意味がよくわかりませんが、スクリプトを実行する機能が必要なのか、単純に機能モジュールを動的に追加したいのかどちらでしょうか。 前者です。スクリプトを解析する機能は実装に時間が かかりそうで。。 なによりどんなときでも間違いなくユーザーのソースを正しく解釈できるってテストだけでも大変そうです。 スクリプトが正しいのに正しく実行されないアプリケーションなんて、ありえませんよね。。 そういう意味で既にだれかが作ったものがあれば ラッキーって(^_^) 説明不足ですいませんでした。