私がやりたいことは、C関数をPython関数に変換することです。
たとえば、事前定義された C 関数プロトタイプがあります。
function_test(ViInt32 Arraysize, ViReal64 readingArray[], ViInt32 *Actual_rraysize)
上記の関数の入力は で、これはパラメーターArraysize
の要素数です。readingArray
上記の関数の出力はreadingArray[]
とArraysize
です。readingArray[]
結果の配列を返し、返された配列のActual_arraysize
実際のサイズを示します。
以下は、この C 関数プロトタイプを使用して作成した Python 関数です。
from ctypes import *
def Py_function_test(self, arraysize, readingarray = [], actualarraysize = [-1e-10]):
while len(readingarray) < arraysize:
readingarray.append(0)
_c_actualarraysize = c_int()
ArrayOfDouble = c_double * arraysize
_c_readingarray = ArrayOfDouble()
self.function_test(c_int(arraysize),
byref(_c_readingarray),
byref(_actualarraysize))
for n in range(arraysize):
readingarray[n] = _c_readingarray[n]
actualarraysize[0] = _c_actualarraysize.value
最終的に、 の値acutalarraysize
が正常に変更されたことがわかりました。しかし、readingarray
を呼び出した後、 の値は変わりませんでしたc function prototype
。
この状況にどう対処するか、それは を使用すべきではなかったからbyref
ですか?