Windows下写用于python的C扩展模块

OS: WIN7 x64

PYTHON: python 3.3 x64(注意是64位)

Compiler: VS2012 (Vc11)

目的:通过将C代码扩展为python使用的模块,在x64位下编译成功

在制作下面例子

https://pythonhosted.org/PyBindGen/tutorial.html

的时候,

出现连接错误,无法找到PyModule_Init, PyNone_Struct

GUI方法:

原因是:将DLL链接到了python33 x64, 而我使用了x86的VC。

将VC项目增加x64.

生成->配置管理器->活动解决方案平台->增加x64


非GUI的方法:在命令行下

> vcvarsall.bat x64

> cl /LD /O2 /MD /EHsc /W3 /I C:\python26\include /D WIN64 /D NDEBUG /D _CONSOLE ..\my-module.c ..\my-module-binding.c /link /OUT:MyModule.pyd /IMPLIB:MyModule.lib /LIBPATH:"C:\python26\libs" /EXPORT:PyInit_MyModule

对比原文的改动

cl /LD /O2 /MD /EHsc /W3 /I C:\python26\include /D WIN32 /D NDEBUG /D _CONSOLE ..\my-module.c ..\my-module-binding.c /link /OUT:MyModule.pyd /IMPLIB:MyModule.lib /LIBPATH:"C:\python26\libs"

红色部分的增加感觉来自于研究这篇文章时的感觉

https://docs.python.org/3.3/extending/windows.html#building-on-windows

其中的例子使用VC6, 来自于python3源码/PC\example_nt\


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值