我通常使用numpy数组,所以我在Python中定义了以下ctypes
类型
arr_double = numpy.ctypeslib.ndpointer(dtype=np.double, flags='C_CONTIGUOUS')
然后在C中得到以下结构
struct mystruct {
double *array;
size_t size;
};
我尝试在Python中使用ctypes定义此结构,如下所示
class MyStruct(ctypes.Structure):
_fields_ = [("array", arr_double), ("size", ctypes.c_size_t)]
然而,这给了我错误
second item in _fields_ tuple (index 2) must be a C type
在ctypes中定义这个结构的正确方法是什么?有没有方法可以使用numpy的ctypes类型?如果没有,我如何将numpy数组转换为“C类型”?
1条答案
按热度按时间ttcibm8c1#
ctypes.Structure
的元素必须是ctypes
类型,但是可以使用numpy.ctypes.data_as
将numpy数组转换为C类型:输出: