入力として既知のサイズの配列へのポインターを受け入れ、関数がデータの処理を完了するまで決定できないサイズの配列を返す c++ 関数があります。c++ 関数を呼び出して最初の配列を渡し、結果を 2 番目の配列として受け取るにはどうすればよいですか?
私は現在、これに似たようなことをしています:
パイソン:
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 で埋められます。返された配列が大きい場合、配列要素がいっぱいになると結果が切り捨てられます。
それが役立つ場合、返された配列の構造には、返された配列のサイズが最初の要素として含まれます。
事前に助けてくれてありがとう...