Pythonからcallされるソースコード『py_add.c』
#include "../../../include/python3.6m/Python.h"
int c_add(int a, int b)
{
return a + b;
}
static PyObject* pyadd(PyObject* self, PyObject* args)
{
int a, b, c;
if (!PyArg_ParseTuple(args, "ii", &a, &b)){
return NULL;
}
c = c_add(a, b);
return Py_BuildValue("i", c);
}
static PyMethodDef addMethods[] = {
{ "c_add", pyadd, METH_VARARGS},
{ NULL }
};
static struct PyModuleDef addModule = {
PyModuleDef_HEAD_INIT,
"addModule",
"Python3 C API Module(Sample 2)",
-1,
addMethods
};
PyMODINIT_FUNC PyInit_addModule(void)
{
return PyModule_Create(&addModule);
}
setup.py
from distutils.core import setup, Extension
setup(name = 'addModule', version = '1.0.0', \
ext_modules = [Extension('addModule', ['py_add.c'])])
『py_add.c』を呼ぶソースコード『add.py』
import addModule
c = addModule.c_add(2, 3)
print(c)