всем привет!
При помощи distutils
создал модульexample.pyd
вот исходникиsetup.py
from distutils.core import setup
from distutils.extension import Extension
examplemodule = Extension(name="example", sources=['example.c', ])
setup(name="example", ext_modules=[examplemodule])
main.py
from example import hello
print(hello(who=None))
example.c
#include <Python.h>
PyObject *hello( PyObject *self, PyObject *args, PyObject *kwargs )
{
char *who = 0;
static char *keywords[] = {"who", NULL};
if (PyArg_ParseTupleAndKeywords(args, kwargs, "s", keywords, &who))
{
return PyUnicode_FromFormat("Hello %s", who);
}
return NULL;
}
static PyMethodDef example_methods[] =
{
{ "hello", (PyCFunction) hello, METH_KEYWORDS, "hello(who) -- return \"Hello who\"" },
{ NULL, 0, 0, NULL }
};
static struct PyModuleDef example_module =
{
PyModuleDef_HEAD_INIT,
"example",
NULL,
-1,
example_methods
};
PyMODINIT_FUNC PyInit_example(void)
{
return PyModule_Create(&example_module);
}
Всё собралось без ошибок но при запускеmain.py
получаю такую ошибкуTraceback (most recent call last):
File "C:\PyC++Pyd\main.py", line 2, in <module>
print(hello(who=None))
SystemError: Bad call flags in PyCFunction_Call. METH_OLDARGS is no longer supported!
Вопрос с чем связанна ошибка и как её исправить?