0

如何使用 C++ 代码扩展嵌入式解释器?我已经嵌入了解释器,我可以使用 boost.python 来制作一个可加载的模块(如在共享库中),但我不希望库四处飘荡,因为我想直接与我的 C++ 应用程序交互。对不起,如果我的写作有点不连贯。

4

1 回答 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 回答