Python调用Dll,函数参数为结构体数组指针,请问怎么实现。

[复制链接]
查看11 | 回复3 | 2021-1-27 05:28:05 | 显示全部楼层 |阅读模式
我现在有一个研华板卡的dll驱动,我想用python调用,这个驱动其中有一个函数的参数是结构体数组指针,请问我在python中怎么为其定义原型,现在结构体的的原型已经定义好了,但是结构体数组不知该怎么实现,以下是我的源代码,求助各位大神指点迷津。
fromctypesimport*
dll=CDLL("C:\\Users\Administrator.SC-201910261228\\Desktop\MyDll\\Adsapi32.dll")
classData_Struct(Structure):
_fields_=[('dwDeviceNum',c_int),('szDeviceName',c_char),('nNum',c_int)]
data=Data_Struct()
new_data=(data*3)()
maxin=c_int(10)
maxout=c_int()
a=dll.DRV_DeviceGetList(byref(new_data),maxin,byref(maxout))
print(a)
print(maxout.value)
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
结构体有了,再把结构体放入到一个列表中,不就是结构体数组了吗?
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
把结构体对象放入列表中,然后再对列表对象取地址之后,会报参数错误,因为是调用的外部DLL,参数是C语言的结构体数组指针,用Python的列表不能跟C语言中的数组对上,您看下,我其他的参数比如整形都是转成C语言的整形再进行的参数传递的,所以我这里也必须要转换成C语言的结构体的数据类型才能进行参数传递。有没有好的方法。
回复

使用道具 举报

千问 | 2021-1-27 05:28:05 | 显示全部楼层
你这边解决了没,我也遇到这个问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行