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\


你可能感兴趣的:(Windows下写用于python的C扩展模块)