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 相关文章推荐
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
python3实现SMTP发送邮件详细教程
Jun 19 Python
Python实现简单石头剪刀布游戏
Jan 20 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 Python
Python如何对XML 解析
Jun 28 Python
Python下载的11种姿势(小结)
Nov 18 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
js与jQuery 获取父窗、子窗的iframe
2013/12/20 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
javascript表单验证大全
2015/08/12 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
深入理解vue Render函数
2017/07/19 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
使用Python的PEAK来适配协议的教程
2015/04/14 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
python tqdm库的使用
2020/11/30 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
顺丰快递Java软件工程师面试题
2015/07/31 面试题
货代行业个人求职简历的自我评价
2013/10/22 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
子女赡养老人协议书
2016/03/23 职场文书
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js