如何使用 C++ 代码扩展嵌入式解释器?我已经嵌入了解释器,我可以使用 boost.python 来制作一个可加载的模块(如在共享库中),但我不希望库四处飘荡,因为我想直接与我的 C++ 应用程序交互。对不起,如果我的写作有点不连贯。
问问题
799 次
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);
您现在可以通过您在此处声明的模块名称来引用您的方法。
这里有一些额外的信息: http ://www.eecs.tufts.edu/~awinsl02/py_c/
于 2010-10-17T00:35:06.973 回答