Durante il processo di risoluzione di questi e dei seguenti problemi che ho riscontrato, ho scritto una ricetta in questo thread . Lo riproduco qui nel caso possa essere di utilità per altri:
Ricetta passo passo per compilare estensioni cython a 64 bit con python 2.6.6 con compilatore mingw in win 7 64 bit
Installa il compilatore mingw
1) Installa tdm64-gcc-4.5.2.exe per la compilazione a 64 bit
Applicare la patch a python.h
2) Modificare python.h in C: \ python26 \ include come indicato in
http://bugs.python.org/file12411/mingw-w64.patch
Modifica distutils
Modifica 2013: Nota che in python 2.7.6 e 3.3.3 -mno-cygwin è stato finalmente rimosso in modo che il passaggio 3 possa essere saltato .
3) Elimina tutti i parametri -mno-cygwin dalla chiamata a gcc nella classe Mingw32CCompiler in Python26 \ Lib \ distutils \ cygwinccompiler.py
4) Nello stesso modulo, modifica get_msvcr () per restituire un elenco vuoto invece di ['msvcr90 '] quando msc_ver ==' 1500 '.
Produci il file libpython26.a (non incluso in 64 bit python)
Modifica 2013: i seguenti passaggi 5-10 possono essere saltati scaricando e installando libpython26.a da gohlke .
5) Ottieni gendef.exe da mingw-w64-bin_x86_64- mingw_20101003_sezero.zip (gendef.exe non è disponibile nella distribuzione tmd64. Un'altra soluzione è compilare gendef dal sorgente ...)
6) Copia python26.dll (che si trova in C \ windows \ system32) nella directory utente (C: \ Users \ myname)
7) Produrre il file python26.def con:
gendef.exe C: \ Users \ myname \ python26.dll
8) Spostare il file python.def prodotto (situato nella cartella da cui è stato eseguito gendef) nella directory utente
9) Produrre libpython.a con:
dlltool -v --dllname python26.dll --def C: \ Users \ myname \ python26.def --output-lib C: \ Users \ myname \ libpython26.a
10) Spostare la libpython26.a creata in C: \ Python26 \ libs
Produci la tua estensione .pyd
11) Crea un file hello.pyx di prova e un file setup.py come indicato nel tutorial cython ( http://docs.cython.org/src/quickstart/build.html )
12) Compila con
python setup.py build_ext --inplace
Fatto!