Bibliothèque python_x64 + C compilée avec mingw_x64 sur Windows7 Py_InitModule4

J’essaie de comstackr la bibliothèque C pour Python sous Windows 7 (64 bits) à l’aide de mingw-x64. Tout fonctionnait comme un charme avec les versions 32 bits.

Je compilais ma bibliothèque avec gcc -shared -IC: \ Python27 \ include -LC: \ Python27 \ libs myModule.c -lpython27 -o myModule.pyd

et cela a fonctionné avec les versions 32 bits. La même procédure fonctionne avec Linux 64 bits. Mais sur Windows 7 64 bits (avec 64 bits x86_64-w64-mingw32 et 64 bits 2.7.5), j’ai un problème:

C:\Users\sergej\AppData\Local\Temp\cci8TbXw.o:myModule.c:(.text+0x267): undefined reference to `__imp_Py_InitModule4' collect2: ld returned 1 exit status 

J’ai vérifié C: /Python27/libs/modsupport.h et il contient déjà

 #if SIZEOF_SIZE_T != SIZEOF_INT /* On a 64-bit system, rename the Py_InitModule4 so that 2.4 modules cannot get loaded into a 2.5 interpreter */ #define Py_InitModule4 Py_InitModule4_64 #endif 

Je suis actuellement à court d’idées sur ce qu’il faut faire. Toute suggestion? Le code C n’est pas un problème ici. J’ai le même problème avec l’exemple de http://csl.name/C-functions-from-Python/
Remarque – la typo à la ligne 26 dans cet exemple: devrait être VARARGS

Et oui – j’ai trouvé (similaire à Comment puis-je créer mes extensions C avec MinGW-w64 en Python? Question) que je peux comstackr cet exemple sortingvial en ajoutant -DMS_WIN64 à la ligne gcc, mais j’ai quand même eu les mêmes erreurs programme (suggérant qu’il y a plus que cela)

 undefined reference to `__imp_PyArg_ParseTuple' undefined reference to `__imp_Py_BuildValue' undefined reference to `__imp_Py_InitModule4_64' 

Copier la réponse à partir des commentaires afin de supprimer cette question du filtre “Sans réponse”:

Je n’aime pas répondre à mes propres questions, mais … l’ajout de -DMS_WIN64 est suffisant. Les problèmes restants étaient dus aux parameters gcc (pour une raison quelconque, -lpython27 devrait être placé juste avant -o myModule.pyd), qui n’étaient pas dans le bon ordre dans mon projet.

~ réponse par Sergej Srepfler