首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过GCC对Win64的Python扩展

通过GCC对Win64的Python扩展
EN

Stack Overflow用户
提问于 2010-09-23 20:32:02
回答 3查看 3.8K关注 0票数 8

有没有人有幸用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

现在,和在this question中一样,我从Python中得到的唯一链接错误是关于__imp_py_InitModule4的。浏览def文件时,我看到一个Py_InitModule4_64符号。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-03 17:14:57

Python中有一种机制,可以防止将模块链接到错误版本的库。当为64位体系结构编译库/模块时,Py_InitModule4函数将重命名为Py_InitModule4_64 (通过宏)(请参阅modsupport.h):

代码语言:javascript
复制
#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位架构编译的。

票数 3
EN

Stack Overflow用户

发布于 2011-04-21 23:33:37

我发现您需要定义MS_WIN64以及WIN32,而且distutils包不理解mingw64,请参阅this post和this one

修补distutil以支持mingw64是相当简单的。

票数 4
EN

Stack Overflow用户

发布于 2014-04-30 22:35:05

请参阅Cython wiki上的64BitCythonExtensionsOnWindows。他们建议不要使用MinGW-64。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3778370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档