VS中利用swig实现c/c++导出python接口
2014-02-11 17:04
881 查看
介绍一下我的环境
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/
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/
相关文章推荐
- 在VS中利用swig导出c/c++ 的python接口文件
- 使用SWIG实现C++导出python接口的配置
- python 利用swig 调用c++的接口。
- centos7下使用swig扩展python接口来调用c++ 实现声纹识别
- 利用swig实现python调用C/C++的方法
- 利用swig实现python调用C/C++的方法
- 利用swig实现python调用C/C++的方法
- 利用C++实现双链表基本接口示例代码
- 利用SWIG转换C++接口到Java接口
- Linux下python调用C++接口实现图片及文件的AES加解密
- 利用SWIG对C++库进行Python包装
- 利用SWIG对C++库进行Python包装
- 利用Boost.Python实现Python C/C++混合编程
- 利用VS2015实现C++与matlab混合编程:
- 【工作总结】通过SWIG实现 python 和 c++ 互相通信
- linux下使用SWIG实现Python调用C++ sdk读取相机图片
- 利用VS根据文件目录结构创建C++工程自己简单实现的方法
- C++利用纯虚函数和虚函数实现接口继承和实现继承
- 利用 SWIG 转换 C/C++ 接口到 Java 接口
- 使用swig实现C++的python扩展功能