> have you considered that you just need to define > CYTHON_NO_PYINIT_EXPORT ? > > the portion of the code below your change has already the > ifdef __cplusplus semantic > > Have you proposed it upstream ? It does not seem > a change restricted to Cygwin > > Any way I see no "wrongness" to add it on the Cython rebuild
Hi Marco, The relevant upstream source looks like this. https://github.com/cython/cython/blob/0.29.21/Cython/Utility/ModuleSetupCode.c#L712 ``` #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC ``` Perhaps `PyMODINIT_FUNC` is defined differently depending on whether it is in C++ or not. If I understand correctly, python-cython-0.29.21-2.src.patch in the Cygwin python-cython package changes `PyMODINIT_FUNC` to `PyObject *`. Here is the part of python-cython-0.29.21-2.src.patch. ``` --- origsrc/Cython-0.29.21/Cython/Utility/ModuleSetupCode.c 2020-07-08 23:44:39.000000000 +0200 +++ src/Cython-0.29.21/Cython/Utility/ModuleSetupCode.c 2021-01-04 22:10:21.641515500 +0100 @@ -709,7 +709,7 @@ static CYTHON_INLINE void * PyThread_tss /////////////// PyModInitFuncType.proto /////////////// #ifndef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#define __Pyx_PyMODINIT_FUNC PyObject * #elif PY_MAJOR_VERSION < 3 // Py2: define this to void manually because PyMODINIT_FUNC adds __declspec(dllexport) to it's definition. ``` Thanks. -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple