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 23 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
Jun 02 Python
Windows平台Python连接sqlite3数据库的方法分析
Jul 12 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
python 获得任意路径下的文件及其根目录的方法
Feb 16 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
Python统计时间内的并发数代码实例
Dec 28 Python
简单了解python filter、map、reduce的区别
Jan 14 Python
Python如何存储数据到json文件
Mar 09 Python
没编程基础可以学python吗
Jun 17 Python
Python Flask实现进度条
May 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
10条PHP编程习惯助你找工作
2008/09/29 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
简单的自定义php模板引擎
2016/08/26 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
PHP微商城开源代码实例
2019/03/27 PHP
解析javascript 浏览器关闭事件
2013/07/08 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
分析python请求数据
2018/08/19 Python
python实现猜单词游戏
2020/05/22 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
Django admin组件的使用
2020/10/24 Python
我的求职计划书
2014/01/10 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
勇敢的心观后感
2015/06/09 职场文书
病假证明模板
2015/06/19 职场文书
个人售房合同协议书
2016/03/21 职场文书
关于python爬虫应用urllib库作用分析
2021/09/04 Python
Python中的datetime包与time包包和模块详情
2022/02/28 Python
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript