请教ctypes如何实现传入结构体数组指针的参数

python資深小白 2013-10-10 11:12:32
请教ctypes如何实现传入结构体数组指针的参数

假定dll中有个函数

void test(*pItem, Itemcount)
第一个参数为指向结构体数组的指针,第二个参数为数组内元素个数

ctypes中要怎样才能实现正确传参呢,我怎么试,都只能传入第一个元素,其余都为0。。。

求指教,谢谢。。。
...全文
649 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2013-10-11
  • 打赏
  • 举报
回复
只能看到首元素,那可能生成数组的方式错了...
python資深小白 2013-10-11
  • 打赏
  • 举报
回复
引用 5 楼 angel_su 的回复:
应该3种都可以,首元素都取到了不是么。c和python里都sizeof一下看看结构是不是一样大,还有用c代码调用dll正常吗...
还真是结构体没对上。。。多谢多谢。。。
angel_su 2013-10-11
  • 打赏
  • 举报
回复
应该3种都可以,首元素都取到了不是么。c和python里都sizeof一下看看结构是不是一样大,还有用c代码调用dll正常吗...
python資深小白 2013-10-11
  • 打赏
  • 举报
回复
引用 3 楼 angel_su 的回复:
貌似应该是items_p.contents = items,或者直接把items当参数...
对,是contents赋值, 试了三种方式, 直接用items, 或者 cast(items, POINTER(itemInfo)), items_p 貌似结果都是一样,第二个元素的值取不到。。。
angel_su 2013-10-11
  • 打赏
  • 举报
回复
貌似应该是items_p.contents = items,或者直接把items当参数...
python資深小白 2013-10-11
  • 打赏
  • 举报
回复
引用 1 楼 angel_su 的回复:
只能看到首元素,那可能生成数组的方式错了...
python里面的数组要怎么生成呢, 我的代码在下面,麻烦帮我看看哪里有问题呢 itemCount = 2 item_array = itemInfo*itemCount items = item_array() items[0].x = 3 items[0].y = 6 items[1].x = 3 items[1].y = 5 items_p = POINTER(itemInfo)() items_p.value = items

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧