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模拟新浪微博登陆功能(新浪微博爬虫)
Dec 24 Python
Python之re操作方法(详解)
Jun 14 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
python安装本地whl的实例步骤
Oct 12 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
python 使用openpyxl读取excel数据
Feb 18 Python
Python下opencv库的安装过程及问题汇总
Jun 11 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
谈谈PHP语法(5)
2006/10/09 PHP
php中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
日期 时间js控件
2009/05/07 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
vuex入门最详细整理
2020/03/04 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
python3抓取中文网页的方法
2015/07/28 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python对List中的元素排序的方法
2018/04/01 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
浅谈Python中的字符串
2020/06/10 Python
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
物流仓储实习自我鉴定
2013/09/25 职场文书
财务总经理岗位职责
2014/02/16 职场文书
学生干部学习的自我评价
2014/02/18 职场文书
明信片寄语大全
2014/04/08 职场文书
网吧温馨提示
2015/07/17 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
Ruby处理YAML和json数据
2022/04/18 Ruby