作者takebreak (怨念)
看板Python
标题[问题] 关於ctypes structure之使用
时间Tue Aug 2 16:54:28 2011
各位先进好,想请教各位一个问题;
小弟撰写一个DLL档, 结合其它函式库,
包裹准备要在python中使用的函式,
然而在使用structure交换资料时出现了问题,
我想达到的目的是将结构传入函式中处理,
由函式将值写入结构的记忆体位置达到目的;
python:
-----------------------------------
#宣告结构struct
class point(Structure):
_fields_ = [("x", c_int),
("y", c_int)]
#宣告target由20个point组成
target = point*20
-----------------------------------
dll 实作函式:
-----------------------------------
DLLEXPORT void test_fuc(struct point *b)
{
b->x = 1;
b->y = 2;
}
----------------------------------
python呼叫:
-----------------------------------
from ctypes import *
class point(Structure):
_fields_ = [("x", c_int),
("y", c_int)]
x = cdll.LoadLibrary('dll_testing.dll')
x.test_fuc(pointer(target())) #我试过此种写法但失败
但无法实质存取内容
------------------------------------
若想要将target放入函式中, 请问该如何撰写呢?
烦请先进给予指点了: ) 十分感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.118.206.153
※ 编辑: takebreak 来自: 140.118.206.153 (08/02 16:54)
1F:→ juiz:byref(point()) 08/02 18:02
2F:→ juiz:我没研究过 struct array 在 Python 里的 memory layout 08/02 18:03
3F:→ juiz:你得自己试一下 08/02 18:03
4F:→ takebreak:谢谢您的指点 小弟将比较byref的差别: ) 08/02 23:36