有谁有幸使用mingw64编译64位Python扩展模块for Windows?在
我已经成功地为这个平台用VS2008编译了有问题的扩展。我还用mingw32(使用32位python)编译了它。我希望两个版本都使用GCC。在
我已经使用Cygwin安装了mingw64-x86_64-w64gcc4.5.1工具集,并说服Python使用它们。但是,链接到python本身失败了。在
所以我选择了pexports 0.44,用它转储一个python26.def
文件并创建libpython26.a
。在
现在,就像在this question中一样,我从Python得到的唯一链接错误是关于__imp_py_InitModule4
。浏览def文件时,我看到一个Py_InitModule4_64
符号。在
有什么想法吗?在
请参见cythonwiki上的64BitCythonExtensionsOnWindows。他们建议不要使用MinGW-64。在
我发现您需要定义msuwin64和WIN32,distutils包不理解mingw64,请参见thispost和{a2}one
修补distutils以支持mingw64相当简单。在
Python中有一种机制可以防止将模块链接到库的错误版本。当为64位体系结构编译库/模块时,Py_InitModule4函数将重命名为Py_InitModule4_64(通过宏)(请参见modsupport.h):
因此,如果您遇到这个错误,这意味着您的Python库或Python模块是针对32位体系结构编译的,而另一个是针对64位体系结构编译的。在
相关问题 更多 >
编程相关推荐