簡體   English   中英

通過GCC為Win64的Python擴展

[英]Python extensions for Win64 via GCC

有沒有人有幸使用mingw64為Windows編譯64位Python擴展模塊?

我已成功使用VS2008為此平台編譯了相關擴展。 我也用mingw32(用32位python)編譯它。 我希望兩個版本都使用GCC。

我使用Cygwin安裝了mingw64-x86_64-w64 GCC 4.5.1工具集,並說服Python使用它們。 但是,鏈接到python本身失敗了。

所以我選擇了pexports 0.44,用它來轉儲python26.def文件並創建libpython26.a

現在,正如在這個問題中 ,我從Python獲得的唯一鏈接錯誤是關於__imp_py_InitModule4 瀏覽def文件,我看到一個Py_InitModule4_64符號。

有任何想法嗎?

我發現你需要定義MS_WIN64以及WIN32,也就是distutils包不懂mingw64,看到這個帖子, 一個

修補distutils以支持mingw64是相當微不足道的。

Python中有一種機制可以防止將模塊與錯誤的庫版本鏈接起來。 當庫/模塊針對64位體系結構進行編譯時,Py_InitModule4函數被重命名為Py_InitModule4_64(通過宏)(請參閱modsupport.h):

#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

因此,如果您收到此錯誤,這意味着您的Python庫或Python模塊是針對32位架構編譯的,而另一個是針對64位架構編譯的。

64BitCythonExtensionsOnWindows在用Cython維基。 他們建議不要使用MinGW-64。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM