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\