python ctypes数组将无法正常返回

时间:2016-09-23 20:11:16

标签: python arrays ctypes

这不起作用:

def CopyExportVars(self, n_export):
    export_array = (ctypes.c_double * n_export)()
    self.dll_handle.vs_copy_export_vars(ctypes.cast(export_array,  ctypes.POINTER(ctypes.c_double)))
    return export_array().contents

我收到此错误(n_export为3):

TypeError: 'c_double_Array_3' object is not callable

1 个答案:

答案 0 :(得分:1)

错误是非常自我解释的。 export_array不是可调用对象,但您尝试在最后一行函数中调用它。此外,您尝试使用与指针相关的接口('.contents')从数组中检索值,而不是指向它的指针。

使其工作的最简单方法是将ctypes结果数组转换为纯Python对象并返回它:

def CopyExportVars(self, n_export):
    export_array = (ctypes.c_double * n_export)()
    self.dll_handle.vs_copy_export_vars(ctypes.cast(export_array,  ctypes.POINTER(ctypes.c_double)))
    return list(export_array)