python 调用c语言函数的方法


Posted in Python onSeptember 29, 2017

虽然python是万能的,但是对于某些特殊功能,需要c语言才能完成。这样,就需要用python来调用c的代码了

具体流程:

c编写相关函数 ,编译成库

然后在python中加载这些库,指定调用函数。

这些函数可以char ,int, float, 还能返回指针。

以下示例:

通过python调用c函数,返回"hello,world 字符串"

新建c语言文件 hello.c

touch hello.c

#include <stdio.h>

char *get_str()
{
  return "hello,world"
}

编译成库

gcc -o hello.so --share -fPIC hello.c

新建python脚本

touch test.py

from ctypes import *

dll = CDLL("./hello.so")
dll.get_str.restype = c_char_p
str = dll.get_str()
print(string_at(str, 11))

执行python脚本

[feng@arch python_c]$ python test.py 
hello,world

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python编写一个简单的Lisp解释器的教程
Apr 03 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
详解K-means算法在Python中的实现
Dec 05 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
python奇偶行分开存储实现代码
Mar 19 Python
对python中的argv和argc使用详解
Dec 15 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
Python+pyaudio实现音频控制示例详解
Jul 23 Python
python文件名和文件路径操作实例
Sep 29 #Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 #Python
Python 基础教程之闭包的使用方法
Sep 29 #Python
python下实现二叉堆以及堆排序的示例
Sep 29 #Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 #Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 #Python
Python有序字典简单实现方法示例
Sep 28 #Python
You might like
生成sessionid和随机密码的例子
2006/10/09 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
PHP7变量处理机制修改
2021/03/09 PHP
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python探索之创建二叉树
2017/10/25 Python
Python实现简单的语音识别系统
2017/12/13 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
python3.7.0的安装步骤
2018/08/27 Python
python通过http下载文件的方法详解
2019/07/26 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
新闻专业推荐信范文
2013/11/20 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android
Pandas-DataFrame知识点汇总
2022/03/16 Python