Le module Build Python (2.7) sur GCC 4.8 échoue

J’essaie de créer une écriture module / extension Python à l’aide de l’API C, mais cela échoue:

% python2 cmath.py build running build running build_ext building 'c_math' extension creating build creating build/temp.linux-x86_64-2.7 gcc -pthread -fno-ssortingct-aliasing -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -DNDEBUG -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python2.7 -c c_math.c -o build/temp.linux-x86_64-2.7/c_math.o c_math.c:18:5: warning: initialization from incompatible pointer type [enabled by default] {"more", c_math_more, METH_VARARGS, "n + nn Using C API"}, ^ c_math.c:18:5: warning: (near initialization for 'c_mathMethods[0].ml_meth') [enabled by default] In file included from /usr/include/python2.7/Python.h:58:0, from c_math.c:1: /usr/include/python2.7/pyport.h:802:39: error: expected ',' or ';' before 'void' # define PyMODINIT_FUNC void ^ c_math.c:22:1: note: in expansion of macro 'PyMODINIT_FUNC' PyMODINIT_FUNC ^ error: command 'gcc' failed with exit status 1 

J’ai essayé de construire manuellement sans distutils mais je reçois les mêmes messages d’erreur / avertissements

c_math.c:

 #include  static PyObject * c_math_more(PyObject *self, PyObject *n, PyObject *nn) { if ( PyInt_Check(n) && PyInt_Check(nn) ) { float cn, cnn, result; cn = PyInt_AsLong(n); cnn = PyInt_AsLong(nn); result = cn + cnn; return PyInt_FromLong(result); } } static PyMethodDef c_mathMethods[] = { {"more", c_math_more, METH_VARARGS, "n + nn Using C API"}, {NULL, NULL, 0, NULL} } PyMODINIT_FUNC initc_math() { (void) Py_InitModule("c_math", c_mathMethods); } int main(int argc, char *argv[]) { Py_SetProgramName(argv[0]); Py_Initialize(); initc_math(); } 

Et cmath.py:

 from distutils.core import setup, Extension c_math = Extension('c_math', sources = ['c_math.c']) setup(name = 'c_math', version = '1.0', description = "c_math setup", ext_modules = [c_math]) 

Qu’est-ce que je fais incorrectement?

ps: s’il vous plaît, s’il existe d’autres erreurs sur c_math.c (je veux dire des erreurs qui ne sont pas montrées par gcc) NE PARLEZ PAS, je veux trouver les erreurs tout seul ^^

  static PyMethodDef c_mathMethods[] = { {"more", c_math_more, METH_VARARGS, "n + nn Using C API"}, {NULL, NULL, 0, NULL} - } + }; 

Il vous manque un point-virgule à la fin …