我有一個C++函數,它接受指向已知大小數組的指針作爲輸入,並返回一個大小數組,直到函數完成其數據處理才能確定大小數組。我如何調用C++函數,傳遞第一個數組並接收第二個數組的結果?ctypes C++函數返回未知大小的數組
我現在做一些與此類似:
PYTHON:
def callout(largeListUlonglongs):
cFunc = PyDLL("./cFunction.dll").processNumbers
arrayOfNums = c_ulonglong * len(largeListUlonglongs)
numsArray = arrayOfNums()
for x in xrange(len(largeListUlonglongs)):
numsArray[x] = long(largeListUlonglongs[x])
cFunc.restype = POINTER(c_ulonglong * len(largeListUlonglongs))
returnArray = cFunc(byref(numsArray)).contents
return returnArray
這工作只要returnArray是大小相同的numsArray的。如果它更小,那麼數組的空元素將填充0。如果返回的數組大於結果在數組元素填充後被截斷。
如果有幫助,返回數組的結構包含返回數組的大小作爲其第一個元素。
感謝提前的幫助......
*「如果它比較小,那麼數組的空元素將填充0」。*這純粹是基於內存是否被分配和歸零。它可以像段錯誤一樣簡單。 ctypes不會將返回數組複製到新的緩衝區中。 – eryksun