通常のPythonで作成されたfloat値の配列があり、基になる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で
前もって感謝します!