[Cython] Cython 0.16 issue Windows with Mingw32

Stefan Behnel stefan_ml at behnel.de
Tue Apr 24 09:34:16 CEST 2012


Stefan Behnel, 23.04.2012 20:28:
> Nathan Dunfield, 23.04.2012 17:58:
>> I've encountered the following issue with Cython 0.16 on Windows with
>> using the Mingw32 compiler (I'm using Python 3.2 here, but I don't think
>> that's the issue):
>>
>> $ python3 setup.py build -c mingw32
>> running build
>> running build_py
>> running build_ext
>> skipping 'SnapPy.c' Cython extension (up-to-date)
>> building 'snappy.SnapPy' extension
>> c:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Iheaders -Iunix_kit -Iaddl_code -I. -Ipari/pari-2.3.4/include/ -Ipari/pari-2.3.4/include/pari -Ic:\Python32\include -Ic:\Python32\PC -c SnapPy.c -o build\temp.win32-3.2\Release\snappy.o
>> SnapPy.c: In function `__pyx_f_6snappy_6SnapPy_13Triangulation_build_rep_into_Sn':
>> SnapPy.c:25187: warning: implicit declaration of function `fg_get_num_orig_gens'
>> SnapPy.c:25423: warning: implicit declaration of function `candidateSn_is_valid'
>> SnapPy.c:25435: warning: implicit declaration of function `candidateSn_is_transitive'
>> SnapPy.c: At top level:
>> SnapPy.c:76434: error: initializer element is not constant
>> SnapPy.c:76434: error: (near initialization for `__pyx_CyFunctionType_type.tp_call')
>> error: command 'gcc' failed with exit status 1
> 
> Hmm, that line basically just says "PyCFunction_Call", which is a function
> exported by CPython. I wonder why gcc would consider this "not a constant".

My guess is that it's a Windows-DLL issue. Maybe symbols exported by
Windows-DLLs simply aren't "constant". We should be able to fix this by
indirecting the slot through a static function.

Stefan


More information about the cython-devel mailing list