我需要在cdef函数中将int的int列表转换为vector [int]以调用另一个C函数。我试过这个:
cdef pylist_to_handles(hs):
cdef vector[int] o_vect
for h in hs:
o_vect.push_back(h)
return o_vect
这应该有效,因为我只需要从其他cdef函数调用它,但是我收到了这个错误:
无法转换'vector< int>'到Python对象
我做错了什么?
答案 0 :(得分:10)
在使用libcpp.vector的Cython 0.17中,您可以这样做:
cdef vector[int] vect = hs
答案 1 :(得分:3)
你真正拥有的是:
cdef object pylist_to_handles(hs):
...
return <object>o_vect
如果没有明确设置类型,则假定它是一个python对象(代码中的“对象”)。正如您在代码中看到的那样,您正在尝试将vector [int]转换为对象,但Cython不知道如何处理它。
只需在cdef中添加一个返回类型:
cdef vector[int] pylist_to_handles(hs):