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根据出生日期返回年龄的方法
Mar 26 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
Python三级菜单的实例
Sep 13 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
python函数定义和调用过程详解
Feb 09 Python
Python3开发环境搭建详细教程
Jun 18 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
Python入门之使用pandas分析excel数据
May 12 Python
python实现双链表
May 25 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用正则表达式匹配URL的简单方法
2013/11/12 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
禁止空格提交表单的js代码
2013/11/17 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
2014/09/25 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
如何编写高质量JS代码(续)
2015/02/25 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
ptyhon实现sitemap生成示例
2014/03/30 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
利用python开发app实战的方法
2019/07/09 Python
python 字符串常用函数详解
2019/09/11 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
python logging模块的使用
2020/09/07 Python
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
副总经理任命书
2014/06/05 职场文书
城市创卫标语
2014/06/17 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
项目合作协议书
2014/09/23 职场文书
收款委托书
2014/10/14 职场文书
党员民主生活会材料
2014/12/15 职场文书
重温入党誓词主持词
2015/06/29 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS