New submission from Jason Morgan <jas...@picochip.com>: Bulding a simple extension (the spam example) fails with mingw64.
in modsupport.h, the following is used to detect 64bit, it does not work with mingw64. #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 This code never compiles, you can test this by placing similar code and filling it with rubbish. This means it thinks the extension is being built on a 32bit compiler and creates the wrong call for Py_InitModule. Workaround: Explicitly calling Py_InitModule4_64() in extension and declaring Py_InitModule4_64(...) in code. Note this does not complain about re-declaration and builds OK because declaration is wrong. e.g. //m=Py_InitModule("spam", SpamMethods); m = Py_InitModule4_64("spam", SpamMethods,(char *)NULL, (PyObject *)NULL, PYTHON_API_VERSION); Or, a better more portable permanent fix, define WIN64 in code and modify modsupport.h: #if SIZEOF_SIZE_T != SIZEOF_INT || defined(WIN64) /* 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 I am sure there are other, more standard ways. ---------- components: Extension Modules messages: 132595 nosy: moog priority: normal severity: normal status: open title: mingw64 does not link when building extensions type: compile error versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue11722> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com