博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
centos swig 编译c,python调用
阅读量:6122 次
发布时间:2019-06-21

本文共 1502 字,大约阅读时间需要 5 分钟。

本文的原文连接是: 未经博主允许不得转载。

1,关于swig

SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。

最新的版本已经开始支持golang了。

2,官方例子

首先安装swig,官网网站最新的是3.0.6版本。

可以使用 yum install swig (这个安装的是2.0.10版本)
下载源代码直接安装最新。

tar -zxvf swig-3.0.6.tar.gzcd swig-3.0.6./configuremakemake install#python 需要安装开发包yum install python-devel

首先创建example.i 接口文件:

/* example.i */ %module example %{ /* Put header files here or function declarations like below */ extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time(); %} extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time();

编写接口的实现文件example.c:

/* File : example.c */ #include 
double My_variable = 3.0; int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); } int my_mod(int x, int y) { return (x%y); } char *get_time() { time_t ltime; time(&ltime); return ctime(&ltime); }

编译python模块:

#编译python模块,会生成一个swig -python example.i 编译c文件,和wrap文件,使用python库编译gcc -c -fPIC example.c example_wrap.c -I/usr/include/python2.7#生成共享库ld -shared example.o example_wrap.o -o _example.so

测试python模块:

>>> import example>>> example.fact(5)120>>> example.my_mod(10,30)10>>> example.get_time()'Mon Aug  3 05:25:35 2015\n'>>> example.get_time()'Mon Aug  3 05:25:37 2015\n'>>> example.get_time()'Mon Aug  3 05:25:38 2015\n'

3,总结

本文的原文连接是: 未经博主允许不得转载。

swig 非常方便的实现了python的模块扩展,可以将现有的c,c++库封装成模块提供给python调用。

你可能感兴趣的文章
舍弃Python,为什么知乎选用Go重构推荐系统?
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>