如何以相同的名称暴露无法直接暴露的C 函数

How to expose a c++ function that cannot be exposed directly, with the same name

本文关键字:暴露 函数      更新时间:2023-10-16

据我了解,由于内存共享的限制,无法在python python中播放返回向量[t]的C 函数。因此,有必要制作第二个功能,该功能使用导入的功能并将其正确暴露于Python扩展模块。

问题是:我不能使用相同的函数名称,并且我的扩展模块最终都以许多怪异的函数名称。例如。请参阅下面的C 函数的导入,然后公开:

cdef extern from "somestuffs.h" namespace "stf":
    cdef vector[float] stufffn(int n)
cpdef np.ndarray[np.float64_t, ndim=1] pystufffn(int n):
    return np.asarray(stufffn(n))

有没有一种方法可以直接在没有addHoc函数的情况下直接公开函数sufffn?有没有办法在扩展中保留" suttfn"名称并避免" pystufffn"?

请注意,我不能以SomestSuffs重命名代码,因为我正在为现有库构建包装器。

预先感谢您的任何答案。

从下面的doc-link中,在pxd文件中声明您的外部函数,并将其与命名空间一起使用,因此您可以在实现中重新使用该名称。<<<<<<<<<<<<<<<<

# wrappers.pxd
cdef extern from "somestuffs.h" namespace "stf":
    cdef vector[float] stufffn(int n)
# mymodule.pyx
cimport wrappers
cpdef np.ndarray[np.float64_t, ndim=1] stufffn(int n):
    return np.asarray(wrappers.stufffn(n))

http://cython.readthedocs.io/en/latest/src/userguide/sharing_declarations.html#using-cimport-cimport-cimport-to-soloves-soloves-neming-conflicts