我有一个在常规 Python 中创建的浮点值数组,我想将其传递给一个面向底层 C 函数的 cython 函数。C 函数要求将数组作为浮动指针传递,如下所示:
void setOverlays(const float * verts);
cython 包装器看起来像这样:
def set_overlays(verts):
setOverlays(verts)
如何将 verts 制作成 cython 数组?我认为这可能有效:
cdef float * cVerts = [v for v in verts]
但不幸的是,生成的值是一个 Python 对象,在这种情况下自动转换不起作用。
ctypes 中的等效表达式(有效)是:
cVerts = (c_float * len(verts))()
for i in range(len(verts)):
cVerts[i] = verts[i]
setOverlays(cast(byteref(cVerts), POINTER(c_float)))
我正在尝试实现相同的目标,但是在 cython
提前致谢!