По сути, вам нужно сначала получить доступ к модулю dict:
d = PyModule_GetDict(m);
Сохранить имя модуля в объекте PyString:
n = PyString_FromString("modname");
Затем правильно заполнить PyMethodDef struct ml
и создайте новый вызываемый элемент:
v = PyCFunction_NewEx(&ml, (PyObject*)NULL, n);
и добавьте этот вызываемый элемент с именем функции в модуль dict:
PyDict_SetItemString(d, ml->ml_name, v);
I 'мы явно пропустили все соответствующие проверки ошибок.
Все это моя интерпретация того, что делает Py_InitModule4
(Py_InitModule
- это макрос, вызывающий Py_InitModule4
с аргументами по умолчанию).