我在 Linux 系统上从 Python 调用 C 共享库。
我遇到的问题是 C 库中的函数将指向结构的指针作为参数。然后它为结构数组分配内存,用数据填充数组并返回。所以我将函数定义为
from ctypes import *
class myStruct(Structure):
_fields_ = [("id", c_uint), "name", c_char*256)]
library.func.argtypes = [POINTER(myStruct)]
然后我这样称呼它:
Myfoo = myStruct
Foo = pointer(Myfoo)
Bar = library.func(Foo)
for i in range(Bar):
print("id = %u, name = %s" % (Foo[i].id, Foo[i].name))
Bar 包含由 func 分配的结构的数量。
无论我做什么,我都无法从 Foo 中获取任何数据。几个月来,我已经尝试了多种不同的变体。我可以查看 C 库中的日志,我知道它正在获取数据并返回它,但我似乎找不到从 Python 中提取它的方法。
有什么想法吗?