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实现抓取网页并且解析的实例
Sep 20 Python
python数组过滤实现方法
Jul 27 Python
numpy中索引和切片详解
Dec 15 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
Python:__eq__和__str__函数的使用示例
Sep 26 Python
如何使用Python对NetCDF数据做空间相关分析
Apr 21 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文本操作类
2006/11/25 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
2018/05/16 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
django rest framework 自定义返回方式
2020/07/12 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
鱼油专家:Omegavia
2016/10/10 全球购物
北京大学自荐信范文
2014/01/28 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
老乡聚会通知
2015/04/23 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python