使用C/C++写Python模块
时间: 2023-12-29 20:01:47 浏览: 35
在C/C++中编写Python模块需要使用Python的C API。下面是一个简单的例子,演示如何在C++中编写一个Python模块。
```c++
#include <Python.h>
static PyObject* my_module_add(PyObject* self, PyObject* args)
{
int a, b;
if (!PyArg_ParseTuple(args, "ii", &a, &b))
return NULL;
return Py_BuildValue("i", a + b);
}
static PyMethodDef my_module_methods[] = {
{"add", my_module_add, METH_VARARGS, "Add two integers"},
{NULL, NULL, 0, NULL}
};
static struct PyModuleDef my_module_def = {
PyModuleDef_HEAD_INIT,
"my_module",
"Example module",
-1,
my_module_methods
};
PyMODINIT_FUNC PyInit_my_module(void)
{
return PyModule_Create(&my_module_def);
}
```
这个例子定义了一个名为`my_module`的Python模块,并在其中定义了一个函数`add`,用于将两个整数相加。在C/C++中编写Python模块时,需要使用Python的C API来定义函数和模块,然后使用`PyModule_Create`来创建模块对象。最后,在模块中定义的函数需要使用`PyArg_ParseTuple`和`Py_BuildValue`来解析和返回参数。
要编译这个模块,需要使用类似下面的命令:
```
g++ -shared -o my_module.so -fPIC my_module.cpp -I /usr/include/python3.6m -lpython3.6m
```
这个命令将会生成一个名为`my_module.so`的共享库,可以通过`import my_module`在Python中使用它。