You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cython封装C++函数模板时遭遇语法错误的解决方案求助

Cython封装C++函数模板时遭遇语法错误的解决方案求助

我在.cpp文件中定义了一个C++模板函数:

template <typename T>
void rank_filter(T* in, T* out, int arr_len, int win_len, int order, Mode mode, T cval, int origin)

其中Mode是一个枚举类型。

我尝试用Cython来封装这个函数,编写的.pyx文件内容如下:

cimport cython
cimport numpy as np

ctypedef fused numeric_t:
    np.float32_t
    np.float64_t
    np.int32_t
    np.int64_t

@cython.boundscheck(False)  # 关闭边界检查
@cython.wraparound(False)  # 关闭负索引支持
cdef extern from "_rank_filter_1d.cpp" nogil:
    void rank_filter[T](T* in, T* out, int arr_len, int win_len, int order, Mode mode, T cval, int origin)

def rank_filter_1d(numeric_t[:] in_arr, numeric_t[:] out_arr, int win_len, int order, int mode, numeric_t cval, int origin):
    rank_filter(&in_arr[0], &out_arr[0], in_arr.shape[0], win_len, order, mode, cval, origin)
    return out_arr

但在终端运行python setup.py build_ext --inplace时出现了错误,错误信息如下:

cdef extern from "_rank_filter_1d.cpp" nogil:
    void rank_filter[T](T* in, T* out, int arr_len, int win_len, int order, Mode mode, T cval, int origin)
                           ^
------------------------------------------------------------

rank_filter_1d_cython.pyx:13:27: Expected ')', found 'in'

我之前试过在void前添加cdef关键字,但并没有解决问题。有没有其他的解决思路或方法呢?

备注:内容来源于stack exchange,提问作者Gideon Kogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 12:39:35