我想做的是将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
?