`
羊小绵
  • 浏览: 49958 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

python 调用C程序的结构体和函数

阅读更多

C代码如下:

 

#include <stdio.h>  

  

typedef struct TestDLL_  

{  

    int a;  

    char *b;  

} testdll;  

  

testdll test(testdll t)  

{  

    t.a=t.a+t.a;  

    printf("%d\n%s\n",t.a,t.b);  

    return t;  

}

 

python代码如下:

 

from ctypes import *  

 

#绝对路径 

dllpath='test.dll'  

dll=CDLL(dllpath)  

 

#python内部参数赋值

a=c_int(125)  

b=c_char_p('Hello world,Hello Chengdu')  

  

#定义结构体

class testdll(Structure):  

    _fields_=[('a',c_int),  

             ('b',c_char_p)]  

 

#实例化并赋值

t=testdll()  

t.a=a  

t.b=b  

  

#设置返回值类型

dll.test.restype=testdll  

  

#测试

t=dll.test(t)  

print t.a  

print t.b  

x=raw_input('any key to continue')

分享到:
评论

相关推荐

    python通过ctypes调用c,python向c函数通过结构体传递python回调函数指针,c回调python

    python通过ctypes调用c语言库函数;python向c函数传递二维数组,一维数组,指针灯参数;python向c函数传递结构体指针,c函数向python返回结构体指针;python向c以参数形式传递回调函数,且c函数回调python回调函数;...

    C++调用Python并传参

    包括C++向python传递图片数据,C++向python传递组数据,C++向python传递字符串数据,C++向python传递结构体数据,C++初始化python类数据并调用方法,实际案例,能直接运行,需要安装opencv和python,numpy库,实现C#...

    使用Python向C语言的链接库传递数组、结构体、指针类型的数据

    由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来调用C语言的代码库。 至于如何调用基础数据类型的数据,请大家参考我的另外一篇文章...

    结构体和XML互转

    1、结构体转XML:定义结构体,调用StructFillXml类的相关函数,可将结构体直接转换成XML字符串,支持嵌套结构体,示例中为4层结构体嵌套; 2、XML转结构体:这个不能直接转化,根据结构体定义,可生成XML转结构体的...

    使用pybind11封装C++结构体作为参数的函数实现步骤

    python调用C/C++有不少的方法,如boost.python, swig, ctypes, pybind11等,这些方法有繁有简,而pybind11的优点是对C++ 11支持很好,API比较简单,现在我们就简单记下Pybind11的入门操作。 pybind11简介 pybind11是...

    python使用ctypes模块调用windowsapi获取系统版本示例

    演示通过ctypes调用windows api函数.# 作者已经知道python32能够实现相同功能# 语句末尾加分号,纯属个人习惯# 仅作部分版本判断,更详细的版本判断推荐系统OSVERSIONINFOEX结构体 import ctypes; class OSINFO...

    Extend_Python:C语言扩展Python学习记录

    Extend Python with C ...接收Python对象-&gt;转换为C对象-&gt;调用C函数-&gt;返回值转换为Python对象-&gt;返回 的流程,较为值得关切的几点是: 指针传参问题 数组传递问题 结构体传递问题 高级一点情况会考虑如何绕过GIL提升速度

    tengge py for s60编程教程

    3.2启动程序和程序列表 3.3对列表操作的函数 3.4随机选择和随机数 3.5图像保存和处理 3.6绑定快捷键 3.7网页源码查看器 3.8联网提交数据 3.9对文件的操作 4.0制作一个截图软件 4.1局部变量和全局变量 4.2资源管理器...

    关于Go编程语言的一些常见基础面试题.pdf

    请说明在Go中函数定义和调用方法。 7. Go语言中的接口(Interface)是什么?请简要介绍在Go中的接口实现方式。 8. Go语言中的defer关键字是什么?请说明在Go中defer的作用和用法。 9. 什么是Go语言中的结构体...

    LuaBind 源码 (Lua增强库)

    使用函数名来调用的版本只能调用Lua全局函数. "..."代表传递给Lua函数的 可变个数的参数. 这使得你可以指定调用的策略.你可以通过 operator[] 来实现 这个功鞥.你可以同过方括号来指定策略,例如: int ret = call_...

    straw:简单的函数调用来处理数据库

    Straw 数据管 :high_voltage:简单的函数调用来处理数据库快速开始运行环境安装# 安装straw库pip install pstraw快速使用from pstraw import Straw# 实例化straw对象db = Straw( DB_DRIVER='mysql', DB_DATABASE='...

    线段树入门

    对算法有兴趣的可以来看看 在自然数,且所有的数不大于30000的范围内讨论一个问题...从树根开始调用递归函数insert // 要插入的线段的左端点和右端点、以及当前线段树中的某条线段 void insert(int s,int t,int step)

    SPDK开发手册中文版.docx

    2.3. 消息传递和并发** 9 2.4. NAND Flash SSD内部 13 2.5. 将I / O提交到NVMe设备** 15 2.5.1 NVMe规范 15 2.5.2 SPDK NVMe驱动程序I / O路径 15 2.6. 使用Vhost-user进行虚拟化I / O. 16 2.6.1 介绍 16 2.6.2 QEMU...

    测试笔记(从零开始)

    结构体 54 条件/分支逻辑 54 Switch 54 If 55 循环 55 For 55 while 56 do…while 56 函数 56 第七章 Windows环境搭建 59 一、名词注解与定义: 59 C/S 60 B/S 60 进销存系统 64 OA系统 69 第八章 需求管理 78 1....

Global site tag (gtag.js) - Google Analytics