Как расширить встроенный интерпретатор Python с помощью функций C ++? - PullRequest
0 голосов
/ 17 октября 2010

Как я могу расширить встроенный интерпретатор с кодом C ++?Я встроил интерпретатор, и я могу использовать boost.python для создания загружаемого модуля (как в общей библиотеке), но я не хочу, чтобы библиотека перемещалась, потому что я хочу напрямую взаимодействовать с моим C ++ приложением.Извините, если мое письмо немного бессвязно.

1 Ответ

2 голосов
/ 17 октября 2010

По крайней мере для интерпретаторов 2.x: вы пишете свои методы как код в стиле C с возвращаемыми значениями PyObject *.Все они в основном выглядят так:

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);

Теперь вы можете ссылаться на свои методы через объявленное здесь modulename.

Дополнительная информация здесь: http://www.eecs.tufts.edu/~awinsl02/py_c/

...