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批量下载图片的三种方法
Apr 22 Python
使用python Django做网页
Nov 04 Python
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
Python 迭代器与生成器实例详解
May 18 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
pymongo中group by的操作方法教程
Mar 22 Python
python增加图像对比度的方法
Jul 12 Python
django基于cors解决跨域请求问题详解
Aug 06 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
python实现从ftp上下载文件的实例方法
Jul 19 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字符串操作常见问题小结
2016/10/11 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python中单下划线_的常见用法总结
2018/07/10 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
德购商城:德国进口直邮商城
2017/06/13 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
2014年教师政治学习材料
2014/06/02 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
python ConfigParser库的使用及遇到的坑
2022/02/12 Python