在VS中利用swig导出c/c++ 的python接口文件
2014-03-27 10:17
477 查看
参考文章:
http://blog.csdn.net/wchoclate/article/details/19082393 http://blog.csdn.net/oracleot/article/details/3851512 http://www.cnblogs.com/ubunoon/archive/2009/02/23/1396447.html
个人总结:
第一步:新建C++DLL工程空程序,添加cpp类。把python的include和libs文件包含到工程里面;
第二步:输出的dll文件改成pyd后缀:
Configuration Properties -> Linker ->General -> Output File: $(OutDir)/_$(ProjectName).pyd
这样VC的工程就配置好了。
第三步:加入“C++导成python的文件”,它的后缀为.i,在工程中添加的是cpp_file.i文件(该文件名没有特殊要求),右键设置属性:
a) Custom Build Step -> General-> Command Line: 按照下面格式书写:
../swig -noproxydel -modern -c++ -python -outdir ../../exe/$(ConfigurationName) -I.. "$(InputPath)"
b) Custom Build Step -> General-> Outputs: $(InputName)_wrap.cxx 该文件是真正的接口文件,由最后设置完成之后,编译得到。
c) 在cpp_file.i文件中加入如下代码:
%module cpp
%{
#include "cpp_file.h"
%}
%include <windows.i>
%include "cpp_file.h"
注意:cpp_file.i文件分为3个部分,首先是
%module cpp
表示要生成的Module的名字是cpp(即要生成cpp.py文件),cpp最好是工程名。
然后是
%header
%{
#include "cpp_file.h"
%}
凡是出现在%header%{……%}对中的内容都会原封不动的出现在cpp_wrapper.cpp文件的头部位置。
最后是
%include "cpp_file.h" 是指我们要封装的c++类
第四步:编译:现在所有的配置工作都已经完成了,接下来要进行编译,这个时候编译结果就没有.dll文件了,因为第二步把输出的dll文件改成pyd后缀了。
第五步:将.cxx文件加入重新编译:最后得到的.pyd和.py文件是最终需要的两个文件。
编译出错可能情况:
。。。请参考前面的连接。
第六步:检验结果:若测试结果正确,表明生成成功。
http://blog.csdn.net/wchoclate/article/details/19082393 http://blog.csdn.net/oracleot/article/details/3851512 http://www.cnblogs.com/ubunoon/archive/2009/02/23/1396447.html
个人总结:
第一步:新建C++DLL工程空程序,添加cpp类。把python的include和libs文件包含到工程里面;
第二步:输出的dll文件改成pyd后缀:
Configuration Properties -> Linker ->General -> Output File: $(OutDir)/_$(ProjectName).pyd
这样VC的工程就配置好了。
第三步:加入“C++导成python的文件”,它的后缀为.i,在工程中添加的是cpp_file.i文件(该文件名没有特殊要求),右键设置属性:
a) Custom Build Step -> General-> Command Line: 按照下面格式书写:
../swig -noproxydel -modern -c++ -python -outdir ../../exe/$(ConfigurationName) -I.. "$(InputPath)"
b) Custom Build Step -> General-> Outputs: $(InputName)_wrap.cxx 该文件是真正的接口文件,由最后设置完成之后,编译得到。
c) 在cpp_file.i文件中加入如下代码:
%module cpp
%{
#include "cpp_file.h"
%}
%include <windows.i>
%include "cpp_file.h"
注意:cpp_file.i文件分为3个部分,首先是
%module cpp
表示要生成的Module的名字是cpp(即要生成cpp.py文件),cpp最好是工程名。
然后是
%header
%{
#include "cpp_file.h"
%}
凡是出现在%header%{……%}对中的内容都会原封不动的出现在cpp_wrapper.cpp文件的头部位置。
最后是
%include "cpp_file.h" 是指我们要封装的c++类
第四步:编译:现在所有的配置工作都已经完成了,接下来要进行编译,这个时候编译结果就没有.dll文件了,因为第二步把输出的dll文件改成pyd后缀了。
第五步:将.cxx文件加入重新编译:最后得到的.pyd和.py文件是最终需要的两个文件。
编译出错可能情况:
。。。请参考前面的连接。
第六步:检验结果:若测试结果正确,表明生成成功。
相关文章推荐
- VS中利用swig实现c/c++导出python接口
- 使用SWIG实现C++导出python接口的配置
- python 利用swig 调用c++的接口。
- Linux下利用SWIG完成Python对使用OpenCV的C++文件的调用
- Python调用C++函数(SWIG,VS2013使用numpy.i完成Numpy与C++数组转换)
- centos7下使用swig扩展python接口来调用c++ 实现声纹识别
- python 中用SWIG包装C和C++和接口
- 利用SWIG对C++库进行Python包装
- 利用swig实现python调用C/C++的方法
- 利用SWIG对C++库进行Python包装
- 利用caffe的Python接口生成prototxt文件
- linux下使用swig让python调用C++(复杂版:包括多文件调用和链接库)
- linux下使用swig让python调用C++(复杂版:包括多文件调用和链接库)
- SWIG之为C/C++的API生成Python调用接口基础
- 在VS.net 2008中利用ATL来创建COM关于接口文件的引用变动
- 利用swig实现python调用C/C++的方法
- 利用VS根据文件目录结构创建C++工程自己简单实现的方法
- 利用SWIG转换C++接口到Java接口
- SWIG,把C/C++ API 导出成Java,C#,Python,Ruby,Php的类库
- 利用SWIG对C++库进行Python包装