Python 如何在numba中与cffi void指针交互
我有一个C库,它与CFFI接口,定义如下:Python 如何在numba中与cffi void指针交互,python,numba,cffi,Python,Numba,Cffi,我有一个C库,它与CFFI接口,定义如下: 导入cffi ffi=cffi.ffi() ffi.cdef(“”) 类型定义结构zkdtree zkdtree; 类型定义结构zkdtree_结果zkdtree_结果; zkdtree*zkdtree_加载(常量字符*文件名,字符**错误); void zkdtree_delete(zkdtree*); 尺寸zkdtree特征(zkdtree*); 双zkdtree_插值(zkdtree*,双*pt); zkdtree_结果*zkdtree_结果_分
导入cffi
ffi=cffi.ffi()
ffi.cdef(“”)
类型定义结构zkdtree zkdtree;
类型定义结构zkdtree_结果zkdtree_结果;
zkdtree*zkdtree_加载(常量字符*文件名,字符**错误);
void zkdtree_delete(zkdtree*);
尺寸zkdtree特征(zkdtree*);
双zkdtree_插值(zkdtree*,双*pt);
zkdtree_结果*zkdtree_结果_分配(作废);
作废zkdtree_结果_删除(zkdtree_结果*);
无效zkdtree_点_信息(zkdtree*,双*pt,zkdtree_结果*输出);
bool zkdtree_result_interpolable(zkdtree_result*);
双zkdtree_结果_中心值(zkdtree_结果*);
双zkdtree结果方差(zkdtree结果*);
""")
请注意,zkdtree
之类的内部结构从未被引用
目前,我正在加载一个包含相应符号的动态库:
C = ffi.dlopen("libcapi.so")
我希望能够在numba jitted函数中调用这些函数(在nopython模式下),并交换各种匿名结构(比如zkdtree)。我看过模块numba.cffi_support
,但似乎不知道如何教它理解我的定义
我尝试过各种各样的变化,但都没有成功
tree\u load=C.zkdtree\u load
err=ffi.new('char**')
interp=C.zkdtree\u插值
cffi\u支持注册类型(ffi.typeof(tree),numba.void)
@纳巴恩吉特
def test_one_point():
树=树负载(b“nlo.tree”,错误)
interp(树[0,0,0,0.]))
但我无法使它同时与tree
和err
一起工作。我会犯这样的错误
TypeError: Failed in nopython mode pipeline (step: nopython frontend)
<ctype 'zkdtree'>
TypeError:在nopython模式管道中失败(步骤:nopython前端)