如何使用C ++代码扩展嵌入式解释器?我已经嵌入了解释器,我可以使用boost.python来创建一个可加载的模块(就像在共享库中一样),但是我不想让库浮动,因为我想直接与我的C ++应用程序接口。对不起,如果我的写作有点不连贯。
答案 0 :(得分: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/