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 正则表达式入门(初级篇)
Dec 07 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
python的等深分箱实例
Nov 22 Python
django框架F&amp;Q 聚合与分组操作示例
Dec 12 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
python中关于数据类型的学习笔记
Jul 19 Python
Python中Selenium模块的使用详解
Oct 09 Python
Django url 路由匹配过程详解
Jan 22 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
Feb 06 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 Python
编写python程序的90条建议
Apr 14 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
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
JavaScript中的其他对象
2008/01/16 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
用cssText批量修改样式
2009/08/29 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
JS高级运动实例分析
2016/12/20 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
建筑行业的大学生自我评价
2013/12/08 职场文书
航空学院求职信
2014/06/11 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书