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 yield机制的异步操作同步化编程模型
Mar 18 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
python根据txt文本批量创建文件夹
Dec 08 Python
使用python list 查找所有匹配元素的位置实例
Jun 11 Python
深入学习python多线程与GIL
Aug 26 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
Python class的继承方法代码实例
Feb 14 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
Protoss兵种介绍
2020/03/14 星际争霸
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
PHP 采集程序原理分析篇
2010/03/05 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
js如何打印object对象
2015/10/16 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
python装饰器原理与用法深入详解
2019/12/19 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
演讲稿怎么写
2014/01/07 职场文书
美德好少年主要事迹
2014/01/29 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
犯错检讨书
2014/02/21 职场文书
销售提升方案
2014/06/07 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
导游词之上海豫园
2019/10/24 职场文书
让文件路径提取变得更简单的Python Path库
2021/05/27 Python
使用Redis做预定库存缓存功能
2022/04/02 Redis
微信小程序实现轮播图指示器
2022/06/25 Javascript