win7 swig c++封装 python 扩展

来源:互联网 发布:matlab优化工具箱在哪 编辑:程序博客网 时间:2024/06/17 11:04

用swig在windows上实现Python 的c++扩展

  1. 在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
这里写图片描述

原创粉丝点击