VS中利用swig实现c/c++导出python接口


介绍一下我的环境

python包的位置为d:\OpenGLDemo\sdk\Python\

Swigwin包的位置d:\OpenGLDemo\sdk\swigwin\

我的工程中用到的lib都放在d:\OpenGLDemo\sdk\lib\ (当然python25.lib也被我拷过来了)

我的VC工程位置d:\OpenGLDemo\src\SwigwinDemo\

工程是一个DLL的工程

 

SwigwinDemo.vcproj中的配置如下

 

1.设置python的头文件路径

Configuration Properties -> C/C++ -> General -> Additional Include Directories:

..\..\sdk\python\include

 

2.设置python库路径

Configuration Properties -> Linker -> General -> Additional Library Directories:

..\..\SDK\lib

 

3.输出的dll文件改成pyd后缀

Configuration Properties -> Linker -> General -> Output File:

$(OutDir)/_$(ProjectName).pyd

 

这样VC的工程就配置好了,下一步就是加入C++导python的文件,它的后缀为.i

我们在工程中添加一个SwigwinDemoExp.i文件,右键设置属性

1.调用swig

Custom Build Step -> General -> Command Line:

..\..\SDK\swigwin\swig -noproxydel -modern  -c++ -python -outdir ..\..\exe\$(ConfigurationName) -I.. "$(InputPath)"

 

2.生成c++的文件,这个文件生成真正用于python的接口

2. Custom Build Step -> General -> Outputs:

$(InputName)_wrap.cxx

 

好现在所有的配置工作都已经完成了,我们来写一个例子,检测一下配置有没有问题:

SwigwinDemoExp.i文件中,添加如下内容:

 

%module SwigwinDemo

 

%{

#include "FunDemo.h"

%}

 

int addTest(int a,int b);

 

FunDemo.h中有

int addTest(int a,int b)

{

    return a + b;

}

 

好一切工作都已经做好了,我们来编译一下!

哎?编译错误提示python25_d.lib找不到,哦,原来是python没有提供debug版的lib,那我们怎么办呢?python是开源的,我们自已手动编译一个,太麻烦了!嘿,没关系,我们可以在python的安装目录下找到pyconfig.h,把python25_d.lib替换为python25.lib,并把#define Py_DEBUG注释掉,再编译一下,OK了

在Debug下出现了三个文件

_SwigwinDemo.lib

_SwigwinDemo.pyd

SwigwinDemo.py

 

我们打开python,测试一下吧^_^

>>> import SwigwinDemo

>>> SwigwinDemo.addTest(2,6)

8


Swig的资料:http://swig.minidx.com/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值