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根据距离和时长计算配速示例
Feb 16 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
Jun 29 Python
Python实现Sqlite将字段当做索引进行查询的方法
Jul 21 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
Python文件和流(实例讲解)
Sep 12 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
python实现按关键字筛选日志文件
Dec 24 Python
Python3常见函数range()用法详解
Dec 30 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP禁止个别IP访问网站
2013/10/30 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
js实现无缝轮播图
2020/03/09 Javascript
用vue写一个日历
2020/11/02 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
Python Queue模块详解
2014/11/30 Python
Python中对列表排序实例
2015/01/04 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
Python实现检测文件MD5值的方法示例
2018/04/11 Python
Django框架反向解析操作详解
2019/11/28 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
python文件编写好后如何实践
2020/07/07 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
甜品店的创业计划书范文
2014/01/02 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
体育运动会广播稿
2014/10/05 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
大学入学感言
2015/08/01 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android