参考网址: 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结构体指针处理(函数参数,函数返回)相关推荐

  1. 【C 语言】结构体 ( 结构体作为函数参数 | 结构体指针作为函数参数 )

    文章目录 一.结构体作为函数参数 二.结构体指针作为函数参数 三.完整代码示例 一.结构体作为函数参数 结构体变量 作为函数形参 , 在函数中 , 只能访问 该函数形参 , 无法修改 结构体内存 的值 ...

  2. 函数中结构体指针作为形参修改指针地址

    当函数的形参为结构体指针,但是在函数中不仅修改指针指向的值,而且修改指针指向的地址 以下可以改变主函数中a的值,但是a指向的地址不会发生改变 struct student {int aa;int bb ...

  3. 【飞秋】关于结构体和结构体指针的P-INVOKE

    这篇讲关于结构体和结构体指针的P-INVOKE,关键有4个P-INVOKE类型,结构体作为输入输出参数.结构体指针作为输入输出参数.还有结构体内的成员类型分为:数组,指针,指针数组,结构体,结构体指针 ...

  4. c语言如何传递结构体指针,注意使用结构体指针给函数传递参数。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了增加参数调用的灵活性,可以利用结构体指针传递多个不同的参数进入C语言函数体. 最著名的例子就是用Win32API HANDLE CreateThrea ...

  5. c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...

    C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...

  6. c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const

    十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...

  7. C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例

    C++ 基础入门 之 结构体/结构体定义和使用/结构体数组/结构体指针/ 结构体嵌套结构体/结构体做函数参数/结构体中 const 使用场景/结构体案例 目录 一.简单介绍 二.结构体定义和使用 三. ...

  8. C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用)

    C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用) 目录 C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数, ...

  9. 【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体 const

    文章目录 1. 定义和使用 2. 结构体数组 3. 结构体指针 4. 结构体嵌套结构体 5. 结构体做函数参数 6. 结构体 const 1. 定义和使用 结构体属于用户自定义的数据类型,允许用户存储 ...

最新文章

  1. 饥荒联机版连不上服务器_饥荒联机版不搜索房间直连服务器教程 搜索不到房间怎么办_游侠网...
  2. brightness temperature
  3. c++文件操作一一读取文件内容
  4. altium designer 绘制pcb时漏线检查
  5. java tree类子项的添加和删除_使用Java实现二叉树的添加,删除,获取以及遍历...
  6. TPU和GPU跑模型时间统计(持续更新中)以及TPU Research Cloud的申请
  7. sklearn自学指南(part20)--收缩和协方差估计
  8. 修改fragment的进入动画_3DsMax—牛顿摆球(动量守恒摆球)动画
  9. Objective-C 日记③ 字符串
  10. Mint-UI 报错提示缺少“raf.js / vue-lazyload / vue-popup” - 解决办法
  11. Zookeeper .Net Client 使用
  12. apt-get出错,由于出现了太多错误,处理过程被终止
  13. 计算机控制系统课件百度云,技术员给你防止百度网盘和谐的方法
  14. Google Chrome Frame 自定义渲染方式,调用ActiveX
  15. 常用的硬盘数据恢复软件Easyrecovery、Finaldata、DataExplore简介
  16. 废粉盒在哪里_复印机提示“废粉盒满”“请及时更换废粉盒”
  17. [Camera Drv]Factory mode下camera图像rotate了180度 - MTK物联网在线解答 - 技术论坛
  18. 一个互联网研发团队的标准配置
  19. 狼人杀游戏 数据库设计
  20. 各种区块链浏览器的地址总汇

热门文章

  1. 关于Binder的点点滴滴(二)
  2. 经典排序算法 - 鸡尾酒排序Cocktail sort
  3. 电子工程师必上的十大专业网站
  4. 在Solaris系统下如何更改网络配置?
  5. 公司生日会生日礼物_你的生日有多受欢迎?
  6. 498. 对角线遍历
  7. 我如何将Google I / O 2018的兴奋带给尼日利亚沃里的115个人
  8. rails 共享变量_如何将Rails实例变量传递给Vue组件
  9. angular和react_如何在Angular中验证默认和自定义React形式
  10. 2016版单词的减法_在2016年最大的电影中,女性只说了27%的单词。