3

クラスがあります

class A {
  A(SomeClass* ptr);
  do_something();
};

boost-python を使用して、組み込みの python インタープリターで使用したいもの

これまでのところ、Python モジュールをBOOST_PYTHON_MODULE作成しclass_<A>、SomeClass ポインターを受け入れるコンストラクターを作成することができました。

ここで、インタープリターを拡張しan_aて、次の python コードが有効になるように、python コードが呼び出されるたびにこのクラス (という名前)のインスタンスが存在するようにします。

#preferably no imports here.
an_a.do_something()

私の問題は 2 つあります。インタプリタを使用する前に、Python または C++ でこのオブジェクトを構築する必要があり、スクリプトの作成者がオブジェクトを使用できるようにする必要があります。私が見つけたドキュメントでこれを行う方法を正確に見つけるのにいくつか問題があります。

4

1 に答える 1

0

私は最近、まさにこのことをする必要がありました。私も Boost.Python を検討 (および使用) しましたが、個人的には (Boost が大好きなのと同じくらい)、この 1 つの機能を得るために Boost ライブラリの半分をドラッグする必要があるのはやり過ぎだと思います。

興味がある方のために、私は最近、ECS:Python と呼ばれる Python ラッパー ライブラリの第一原理から、C++ 用の埋め込み Python スクリプトを実装しました。ECS:Python (Embedded C++ Scripting with Python) は、C++ アプリケーションから埋め込み Python インタープリターにオブジェクトを公開してインタラクティブなスクリプトを作成したい C++ 開発者向けに特別に設計されています。

その無料 (BSD) とオープン ソース: http://sourceforge.net/projects/ecspython

于 2012-11-27T19:44:58.307 に答える