埋め込みインタープリターを C++ コードで拡張するにはどうすればよいですか? インタープリターを埋め込んでおり、boost.python を使用して (共有ライブラリのように) ロード可能なモジュールを作成できますが、C++ アプリケーションと直接やり取りしたいので、ライブラリが浮かんでいるのは望ましくありません。私の文章が少し支離滅裂でしたら申し訳ありません。
1 に答える
2
少なくとも 2.x インタープリターの場合: PyObject* の戻り値を持つ C スタイルのコードとしてメソッドを記述します。それらはすべて基本的に次のようになります。
PyObject* foo(PyObject *self, PyObject *args);
次に、これらのメソッドを PyMethodDef の静的配列に集めます。
static PyMethodDef MyMethods[] =
{
{"mymethod", foo, METH_VARARGS, "What my method does"},
{NULL, NULL, 0, NULL}
};
次に、インタープリターを作成して初期化した後、次の方法でこれらのメソッドをインタープリターに「追加」できます。
Py_InitModule("modulename", MyMethods);
ここで宣言したモジュール名を介してメソッドを参照できるようになりました。
于 2010-10-17T00:35:06.973 に答える