Python Ctypes结构体指针处理(函数参数,函数返回)
参考网址: http://www.2cto.com/kf/201109/106444.html
本文演示了在python中调用C语言生成的动态库,返回结构体指针,并进行输出!
test.c(动态库源代码)
// 编译生成动态库: gcc -g -fPIC -shared -o libtest.so test.c#include <stdio.h>
#include <string.h>
#include <stdlib.h>typedef struct StructPointerTest
{char name[20];int age;
}StructPointerTest, *StructPointer;StructPointer test() // 返回结构体指针
{ StructPointer p = (StructPointer)malloc(sizeof(StructPointerTest)); strcpy(p->name, "Joe");p->age = 20;return p;
}
编译:gcc -g -fPIC -shared -o libtest.so test.c
call.py(python调用C语言生成的动态库):
#!/bin/env python
# coding=UTF-8from ctypes import *#python中结构体定义
class StructPointer(Structure):_fields_ = [("name", c_char * 20), ("age", c_int)]if __name__ == "__main__":lib = cdll.LoadLibrary("./libtest.so")lib.test.restype = POINTER(StructPointer)p = lib.test()print "%s: %d" %(p.contents.name, p.contents.age)
最后运行结果:
[zcm@c_py #112]$make clean
rm -f *.o libtest.so
[zcm@c_py #113]$make
gcc -g -fPIC -shared -o libtest.so test.c
[zcm@c_py #114]$./call.py
Joe: 20
[zcm@c_py #115]$
Python Ctypes结构体指针处理(函数参数,函数返回)相关推荐
- 【C 语言】结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )
文章目录 一.结构体作为函数参数 二.结构体指针作为函数参数 三.完整代码示例 一.结构体作为函数参数 结构体变量 作为函数形参 , 在函数中 , 只能访问 该函数形参 , 无法修改 结构体内存 的值 ...
- 函数中结构体指针作为形参修改指针地址
当函数的形参为结构体指针,但是在函数中不仅修改指针指向的值,而且修改指针指向的地址 以下可以改变主函数中a的值,但是a指向的地址不会发生改变 struct student {int aa;int bb ...
- 【飞秋】关于结构体和结构体指针的P-INVOKE
这篇讲关于结构体和结构体指针的P-INVOKE,关键有4个P-INVOKE类型,结构体作为输入输出参数.结构体指针作为输入输出参数.还有结构体内的成员类型分为:数组,指针,指针数组,结构体,结构体指针 ...
- c语言如何传递结构体指针,注意使用结构体指针给函数传递参数。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了增加参数调用的灵活性,可以利用结构体指针传递多个不同的参数进入C语言函数体. 最著名的例子就是用Win32API HANDLE CreateThrea ...
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...
- c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const
十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...
- C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例
C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...
- C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用)
C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用) 目录 C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数, ...
- 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const
文章目录 1. 定义和使用 2. 结构体数组 3. 结构体指针 4. 结构体嵌套结构体 5. 结构体做函数参数 6. 结构体 const 1. 定义和使用 结构体属于用户自定义的数据类型,允许用户存储 ...
最新文章
- 饥荒联机版连不上服务器_饥荒联机版不搜索房间直连服务器教程 搜索不到房间怎么办_游侠网...
- brightness temperature
- c++文件操作一一读取文件内容
- altium designer 绘制pcb时漏线检查
- java tree类子项的添加和删除_使用Java实现二叉树的添加,删除,获取以及遍历...
- TPU和GPU跑模型时间统计(持续更新中)以及TPU Research Cloud的申请
- sklearn自学指南(part20)--收缩和协方差估计
- 修改fragment的进入动画_3DsMax—牛顿摆球(动量守恒摆球)动画
- Objective-C 日记③ 字符串
- Mint-UI 报错提示缺少“raf.js / vue-lazyload / vue-popup” - 解决办法
- Zookeeper .Net Client 使用
- apt-get出错,由于出现了太多错误,处理过程被终止
- 计算机控制系统课件百度云,技术员给你防止百度网盘和谐的方法
- Google Chrome Frame 自定义渲染方式,调用ActiveX
- 常用的硬盘数据恢复软件Easyrecovery、Finaldata、DataExplore简介
- 废粉盒在哪里_复印机提示“废粉盒满”“请及时更换废粉盒”
- [Camera Drv]Factory mode下camera图像rotate了180度 - MTK物联网在线解答 - 技术论坛
- 一个互联网研发团队的标准配置
- 狼人杀游戏 数据库设计
- 各种区块链浏览器的地址总汇
热门文章
- 关于Binder的点点滴滴(二)
- 经典排序算法 - 鸡尾酒排序Cocktail sort
- 电子工程师必上的十大专业网站
- 在Solaris系统下如何更改网络配置?
- 公司生日会生日礼物_你的生日有多受欢迎?
- 498. 对角线遍历
- 我如何将Google I / O 2018的兴奋带给尼日利亚沃里的115个人
- rails 共享变量_如何将Rails实例变量传递给Vue组件
- angular和react_如何在Angular中验证默认和自定义React形式
- 2016版单词的减法_在2016年最大的电影中,女性只说了27%的单词。