Ctypes Python和通过结构指针的浮动指针
我正在尝试将结构指针传递给API包装器,其中结构包含Float Pointer成员。我不确定如何将浮动指针值传递给结构。
/结构/
class input_struct (ctypes.Structure):
_fields_ = [
('number1', ctypes.POINTER(ctypes.c_float)),
('number2', ctypes.c_float),
#('option_enum', ctypes.POINTER(option))
]
/包装器/
init_func = c_instance.expose_init
init_func.argtypes = [ctypes.POINTER(input_struct)]
#help(c_instance)
inp_str_ptr = input_struct()
#inp_str_ptr.number1 = cast(20, ctypes.POINTER(ctypes.c_float)) # want to pass pointer
inp_str_ptr.number1 = 20 # want to pass as float pointer
inp_str_ptr.number2 = 100
c_instance.expose_init(ctypes.byref(inp_str_ptr))
c_instance.expose_operation()
I'm trying to pass a structure pointer to the API wrapper, Where the struct is containing float pointer member. I'm not sure that how we can pass float pointer value to the structure.
/Structure/
class input_struct (ctypes.Structure):
_fields_ = [
('number1', ctypes.POINTER(ctypes.c_float)),
('number2', ctypes.c_float),
#('option_enum', ctypes.POINTER(option))
]
/wrapper/
init_func = c_instance.expose_init
init_func.argtypes = [ctypes.POINTER(input_struct)]
#help(c_instance)
inp_str_ptr = input_struct()
#inp_str_ptr.number1 = cast(20, ctypes.POINTER(ctypes.c_float)) # want to pass pointer
inp_str_ptr.number1 = 20 # want to pass as float pointer
inp_str_ptr.number2 = 100
c_instance.expose_init(ctypes.byref(inp_str_ptr))
c_instance.expose_operation()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以创建一个
c_float
实例,然后用指向该实例的指针初始化,也可以创建c_float
array并传递它,并在ctypes
imitates中指向其第一个元素的指针的衰减。请注意,
ctypes.pointer()
ctypes的现有实例 ctypes
对象创建指示,而ctypes.pointer()指针类型。
test.c - 用于测试
test.py
输出:
You can either create a
c_float
instance and initialize with a pointer to that instance, or create ac_float
array and pass it, which inctypes
imitates a decay to a pointer to its first element.Note that
ctypes.pointer()
creates pointers to existing instances ofctypes
objects whilectypes.POINTER()
creates pointer types.test.c - for testing
test.py
Output: