您的位置:首页 > 编程语言 > C语言/C++

在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文件是最终需要的两个文件。

编译出错可能情况:

。。。请参考前面的连接。

第六步:检验结果:若测试结果正确,表明生成成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python