Python调用C语言开发的共享库方法实例


Posted in Python onMarch 18, 2015

在helloworld工程中,编写了一个简单的两个数值相加的程序,编译成为共享库后,如何使用python对其进行调用呢?

使用ll命令列出当前目录下的共享库,其中共享库名为libhelloworld.so.0.0.0

ufo@ufo:~/helloworld/.libs$ ll

总用量 32

drwxr-xr-x 2 ufo ufo 4096  1月 29 14:54 ./

drwxr-xr-x 6 ufo ufo 4096  1月 29 16:08 ../

-rw-r--r-- 1 ufo ufo 3816  1月 29 14:54 helloworld.o

-rw-r--r-- 1 ufo ufo 3956  1月 29 14:54 libhelloworld.a

lrwxrwxrwx 1 ufo ufo   19  1月 29 14:54 libhelloworld.la -> ../libhelloworld.la

-rw-r--r-- 1 ufo ufo  983  1月 29 14:54 libhelloworld.lai

lrwxrwxrwx 1 ufo ufo   22  1月 29 14:54 libhelloworld.so -> libhelloworld.so.0.0.0*

lrwxrwxrwx 1 ufo ufo   22  1月 29 14:54 libhelloworld.so.0 -> libhelloworld.so.0.0.0*

-rwxr-xr-x 1 ufo ufo 9038  1月 29 14:54 libhelloworld.so.0.0.0*

进入python的命令行模式进行C语言实现的两个数值相加的程序的调用;
ufo@ufo:~/helloworld/.libs$ python

Python 2.7.4 (default, Sep 26 2013, 03:20:56) 

[GCC 4.7.3] on linux2

Type "help", "copyright", "credits" or "license" for more information.

载入ctypes类(此类即是调用C语言动态库的方法)
>>> import ctypes

打开当前目录的动态库
>>> lib=ctypes.cdll.LoadLibrary("./libhelloworld.so.0.0.0")

调用动态库中的接口
>>> lib.add(5,7)

12

两个参数的相加的函数如下:
ufo@ufo:~/helloworld$ cat helloworld.c 

#include <stdio.h>

#include <stdlib.h>
int add(int a, int b)

{

    int c = a + b;

    return c;

}

编译动态库的命令行:
gcc -shared -fPIC -DPIC helloworld.c -o libhelloworld.so.0.0.0

Python 相关文章推荐
python单元测试unittest实例详解
May 11 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
浅谈python中set使用
Jun 30 Python
Python爬取网易云音乐热门评论
Mar 31 Python
从django的中间件直接返回请求的方法
May 30 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
Python装饰器简单用法实例小结
Dec 03 Python
简单了解为什么python函数后有多个括号
Dec 19 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 Python
Python两个整数相除得到浮点数值的方法
Mar 18 #Python
10款最好的Web开发的 Python 框架
Mar 18 #Python
python通过yield实现数组全排列的方法
Mar 18 #Python
python以环状形式组合排列图片并输出的方法
Mar 17 #Python
python将ip地址转换成整数的方法
Mar 17 #Python
python实现模拟按键,自动翻页看u17漫画
Mar 17 #Python
python通过pil为png图片填充上背景颜色的方法
Mar 17 #Python
You might like
php查看当前Session的ID实例
2015/03/16 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
php生成HTML文件的类方法
2019/10/11 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
js判断当前浏览器类型,判断IE浏览器方法
2014/06/02 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python 字符串格式化代码
2013/03/17 Python
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
python获取代理IP的实例分享
2018/05/07 Python
python梯度下降法的简单示例
2018/08/31 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
Python如何定义接口和抽象类
2020/07/28 Python
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
自我鉴定范文200字
2013/10/02 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
街道党工委党的群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
电力工程合作意向书
2015/05/11 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS