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 28 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
python 判断是否为正小数和正整数的实例
Jul 23 Python
python中的随机函数random的用法示例
Jan 27 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
TensorFlow基本的常量、变量和运算操作详解
Feb 03 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
Python的scikit-image模块实例讲解
Dec 30 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
我用php+mysql写的留言本
2006/10/09 PHP
linux系统上支持php的 iconv()函数的方法
2011/10/01 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
jquery 学习之二 属性(html()与html(val))
2010/11/25 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python实现多张图片拼接成大图
2019/01/15 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python中输入和输出(打印)数据实例方法
2019/10/13 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
大学生创业计划书的格式要求
2013/12/29 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
导游词之珠海轮廓
2019/10/25 职场文书