據我所知,不可能在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