Trong quá trình giải quyết những vấn đề này và những vấn đề sau tôi tìm thấy, tôi đã viết một công thức trong chủ đề này . Tôi sao chép nó ở đây trong trường hợp nó có thể hữu ích cho người khác:
Công thức từng bước để biên dịch phần mở rộng 64-bit cython với python 2.6.6 với trình biên dịch mingw trong win 7 64-bit
Cài đặt trình biên dịch mingw
1) Cài đặt tdm64-gcc-4.5.2.exe để biên dịch 64-bit
Áp dụng bản vá cho python.h
2) Sửa đổi python.h trong C: \ python26 \ include như được chỉ ra trong
http://bugs.python.org/file12411/mingw-w64.patch
Sửa đổi distutils
Edit 2013: Lưu ý rằng trong python 2.7.6 và 3.3.3 -mno-cygwin cuối cùng đã bị loại bỏ nên có thể bỏ qua bước 3 .
3) Loại bỏ tất cả các tham số -mno-cygwin cho lệnh gọi tới gcc trong lớp Mingw32CCompiler trong Python26 \ Lib \ distutils \ cygwinccompiler.py
4) Trong cùng một mô-đun, hãy sửa đổi get_msvcr () để trả về một danh sách trống thay vì ['msvcr90 '] khi msc_ver ==' 1500 '.
Tạo tệp libpython26.a (không có trong python 64 bit)
Chỉnh sửa 2013: có thể bỏ qua các bước 5-10 sau bằng cách tải xuống và cài đặt libpython26.a từ gohlke .
5) Lấy gendef.exe từ mingw-w64-bin_x86_64- mingw_20101003_sezero.zip (gendef.exe không có sẵn trong bản phân phối tmd64. Một giải pháp khác là biên dịch gendef từ nguồn ...)
6) Sao chép python26.dll (đặt tại C \ windows \ system32) vào thư mục người dùng (C: \ Users \ myname)
7) Tạo tệp python26.def với:
gendef.exe C: \ Users \ myname \ python26.dll
8) Di chuyển tệp python.def được tạo (nằm trong thư mục từ nơi gendef được thực thi) vào thư mục người dùng
9) Tạo libpython.a bằng:
dlltool -v --dllname python26.dll --def C: \ Users \ myname \ python26.def --output-lib C: \ Users \ myname \ libpython26.a
10) Di chuyển libpython26.a đã tạo sang C: \ Python26 \ libs
Tạo phần mở rộng .pyd của bạn
11) Tạo tệp hello.pyx thử nghiệm và tệp setup.py như được chỉ ra trong hướng dẫn cython ( http://docs.cython.org/src/quickstart/build.html )
12) Biên dịch với
python setup.py build_ext --inplace
Làm xong!