python 调用C代码获取数据,C代码要求1个结构参数, 其中有项目是指向缓冲区的指针,如何实现参数赋值?

2025-04-03 23:25:01
推荐回答(2个)
回答1:

class stdata(Structure):
_fields_ = [('pBuf', c_char_p), ('buflen', c_int)]

N=100
buf = create_string_buffer(N)
d = stdata()
d.buflen = N
d.pBuf = cast(buf, c_char_p)

n = CallMyCFunc_GetData(byref(d))

关键在于create_string_buffer创建可写buffer;cast转换为char*类型。

回答2:

用Python写一个相应的结构体,继承ctypes的Struct类,传入参数的时候为by_ref(ldata)