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中的socket模块使用代理实例
May 29 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
Python分析学校四六级过关情况
Nov 22 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
python实现扫描日志关键字的示例
Apr 28 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
numpy实现RNN原理实现
Mar 02 Python
Python中的 No Module named ***问题及解决
Jul 23 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,ajax实现分页
2008/03/27 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
js格式化时间小结
2014/11/03 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
python生成器的使用方法
2013/11/21 Python
Python re模块介绍
2014/11/30 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
Python 远程开关机的方法
2020/11/18 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
共产党员岗位承诺书
2014/05/29 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
会计专业自荐信范文
2015/03/05 职场文书
离婚案件答辩状
2015/05/22 职场文书
高中开学感言
2015/08/01 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server