据我所知,不可能在python中公开一个返回vector [T]的C++函数,因为内存共享限制。 因此,有必要制作第二个使用导入函数的函数,并将其正确显示给python扩展模块。如何暴露无法直接暴露,具有相同名称的C++函数
问题是:我不能使用相同的函数名称,并且我的扩展模块以许多奇怪的函数名称结尾。例如。见下面,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))
有没有办法直接暴露函数stufffn没有addhoc函数? 有没有办法在扩展名中保留名字“stufffn”并避免使用“pystufffn”?
请注意,我无法重新编写某些东西的代码,因为我正在为现有的库构建包装。
在此先感谢您的任何答案。
可以使用升压蟒暴露C++类和函数python.And是你可以从C++函数返回向量蟒蛇。只有你必须暴露矢量类型以及python模块。 – sagar
我现在发现助推python,看起来不错。 你有最后两句话的指针/参考/例子吗? – GDegottex
另请参见pybind11,本质上是一个“现代”(利用c + + 11)版本的Boost.Python https://pybind11.readthedocs.io/en/stable/intro.html – chrisb