我正在阅读有关如何绑定 Python 和 C 的教程。我使用的是 Python v3.7.1,所以我不得不使用新的 Python 接口(与示例不同),所以现在我有:
加法器
#include <Python.h>
static PyObject *addList_add(PyObject *self, PyObject *args)
{
PyObject *listObj;
if (!PyArg_ParseTuple(args, "O", &listObj))
return NULL;
Py_ssize_t length = PyList_Size(listObj);
long i, sum = 0;
for (i = 0; i < length; i++)
{
PyObject *temp = PyList_GetItem(listObj, i);
long elem = PyLong_AsLong(temp);
sum += elem;
}
return Py_BuildValue("i", sum);
}
static char addList_docs[] = "add(): add all elements of the list\n";
static PyMethodDef addLust_funcs[] = {
{"add", (PyCFunction)addList_add, METH_VARARGS, addList_docs},
{NULL, NULL, 0, NULL}};
static struct PyModuleDef addList = {
PyModuleDef_HEAD_INIT,
"addList",
addList_docs,
-1,
addLust_funcs};
PyMODINIT_FUNC PyInit_addList(void)
{
return PyModule_Create(&addList);
}
似乎一切都正确,我可以通过调用该addList.add()
函数来运行 Python 代码。但是在构建模块时,我得到了这个输出
胡子哥哥
相关分类