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 相关文章推荐
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
Python实现字典去除重复的方法示例
Jul 31 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
Jan 29 Python
python中dict使用方法详解
Jul 17 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
python pandas cumsum求累计次数的用法
Jul 29 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
python爬虫中的url下载器用法详解
Nov 30 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(3)
2006/10/09 PHP
基于PHP文件操作的详解
2013/06/05 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
Javascript事件实例详解
2013/11/06 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
Python的Django框架安装全攻略
2015/07/15 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
django中related_name的用法说明
2020/05/20 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
在线课程:Skillshare
2019/04/02 全球购物
思想纪律作风整顿剖析材料
2014/10/11 职场文书
文明班级申报材料
2014/12/24 职场文书
作文评语集锦
2014/12/25 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
组织委员竞选稿
2015/11/21 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL