用swig在windows上实现Python 的c++扩展
在SWIG官网下载最新的Swigwin,解压
2. .添加环境变量
将swig.exe所在文件夹目录添加到环境变量path中
3. 检查是否配置成功
运行cmd.exe ,输入swig -help,出现如下图所示提示信息即为配置成功
4. 用vs2013建立工程
新建win32控制台应用程序,配置类型为动态链接库.dll;
添加新建文件example.i,如下图所示:
编写example.i文件内容为如下代码:
/* File: example.i */
%module example
%{
#define SWIG_FILE_WITH_INIT
#include "example.h"
%}
int fact(int n);
添加新建example.h文件,内容为:
/* File: example.h */
int fact(int n);
添加新建example.cpp文件,内容为:
/* File: example.cpp */
#include "example.h"
int fact(int n)
{
return n*n;
}
5. 生成example.py
在cmd中切换目录到example.i所在文件夹目录下,并输入
swig -c++ -python example.i
如图所示:
在example.i 同文件夹下会生成example_wrap.cxx 和 example.py两个文件
6. 编译生成python可调用的扩展模块库_example.pyd
添加example_wrap.cxx到以上vs2013项目中:
设置项目属性,目标文件名为_$(ProjectName) ,目标扩展名为.pyd:
将Python.h目录添加到VC++附加包含目录中;
将python35.lib所在目录添加到链接器附加库目录中,并添加依赖项python35.lib;
编译生成项目,成功后则会在输出目录中出现_example.pyd文件。
7. 测试使用example.py和_example.pyd
将example.py 拷贝到_example.pyd同一目录下
在命令行提示符cmd.exe中更改目录到example.py 和_example.pyd所在目录;
输入python
启动python解释器
输入import example as e 引用example模块
输入print(e.fact(6)) 看打印出来是否是36