我綁定到一個採用結構數組的C API(如ATTRIBUTE *attributes
)。獲取指向Python int的指針(迭代中)
ctypedef struct ATTRIBUTE:
unsigned long type
void *pValue
unsigned long ulValueLen
C API假定您在調用函數之前在堆棧上創建結構體數組及其值。
我可以使用分配pValue
爲一次性的:
cdef unsigned long value = True
attr.pValue = &value
然而,在這種情況下,我們從Python的取值(作爲迭代)。它似乎工作正常bytes
。
data = PyMem_Malloc(len(attrs) * sizeof(ATTRIBUTE))
for index, (key, value) in enumerate(attrs.items()):
data[index].type = key
data[index].pValue = <unsigned char *> value
data[index].ulValueLen = len(value)
但是我沒有堆棧定義來傳遞整數類型。處理這個問題的正確方法是什麼?我是否還需要爲其他需要存儲和複製值的類型分配數組,或者可以以某種方式訪問基礎Python存儲?