switch使用方法,swim swiming用法
由于近期工作中需要调用python中的c/c代码,网上搜索的方法很多,我结合网上资料总结了以下几点。
下面直接说一下适用的方法。
1.swig适用于这种方法的治疗。方法步骤:
a、下载swig源码包
http://www.swig.org/survey.html
b、解压swig安装包,解压安装。
塔尔-xvf swig-3.0.12.tar.gz。/configure-prefix=/usr/locals wig(此处指定了安装目录,未指定默认的直接默认系统路径)
(如果这个不成功,prce错误缺失,说明对应的文件缺失,需要安装对应的库,
个人使用Ubuntu,安装方法:apt-get安装pcre-dev,或者下载源码包安装。
)
制作制作安装
至此,swig安装完成。
2.使用示例
在python中调用c/c代码使用方法。
a、c代码:
//test.h
int add(int a,int b);
int sub(int a,int b);
//test.cpp
int add(){ return a b;} int sub(int a,int b){ return a-b;}
编辑test.i文件
用下面的方法来写。I文件(* * * * * * * * * *)。
//%模块后的名称是封装的模块名称。包,python通过这个名称加载程序。
//%{%}一般包含一些这个文件需要的函数声明和头文件。
//最后一部分声明了要封装的函数和变量,可以使用%include file模块头文件直接包含。
b,//文件test.i
%模块测试
%{
#define SWIG_WITH_INIT
#包含“test.h”
%}
%include test.h
C.执行命令进行编辑。我归档。
swig -python -c测试
会生成相应的文件:模块名_ warp.cxx。
使用python提供的自动编译模块进行编译。编写编译文件setup.py
内容如下:(仅供参考,详细参见python自动编译动态链接库文档)
#生成扩展模块
Test _ module=extension (_ test ,#模块名,必须加下划线。
Sources=[test_wrap.cxx ,#封装的接口cxx文件
test.cpp],
)
设置(name=test ,# packaged name
版本=0.1 ,
作者=SWIG Docs ,
description=从文档简单切换pht ,
Ext_modules=[test_module],#与上面的扩展模块名一致。
Py_modules=[test],#要打包的模块列表
)
使用python执行setup.py文件
Python setup.py build编译生成相应的库,Python可以直接调用。
实现过程如下:测试模块是编译C代码生成的测试模块,前面已经介绍了一个C代码的例子:
导入测试
test.add(1,2)
三
测试sub(4,2)
2