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程序中操作文件之flush()方法的使用教程
May 24 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
Python反射用法实例简析
Dec 22 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
Feb 03 Python
基于python和flask实现http接口过程解析
Jun 15 Python
Numpy 多维数据数组的实现
Jun 18 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
python中翻译功能translate模块实现方法
Dec 17 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代码
2013/11/19 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
js select常用操作控制代码
2010/03/16 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
八大排序算法的Python实现
2021/01/28 Python
详解Python文本操作相关模块
2017/06/22 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
Pytorch之finetune使用详解
2020/01/18 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
大学生职业生涯规划范文
2014/01/08 职场文书
中学生家长评语大全
2014/04/16 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
地道战观后感
2015/06/04 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript