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中的对象拷贝示例 python引用传递
Jan 23 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
python写日志封装类实例
Jun 28 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
Python中一些不为人知的基础技巧总结
May 19 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
浅谈Python中的bs4基础
Oct 21 Python
django删除表重建的实现方法
Aug 28 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
python颜色随机生成器的实例代码
Jan 10 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
Python进程的通信Queue、Pipe实例分析
Mar 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
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
Python抓取京东图书评论数据
2014/08/31 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python语言快速上手学习方法
2018/12/14 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Python自定义一个异常类的方法
2019/06/27 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
受伤赔偿协议书
2014/09/24 职场文书
授权委托书协议书
2014/10/16 职场文书
安全教育主题班会教案
2015/08/12 职场文书
《社戏》教学反思
2016/02/22 职场文书
股东协议书范本2016
2016/03/21 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers