我一直在使用Cython的幾個項目。我看到很多有關將C++和C包含到您的Cython代碼中的文檔。有時候,當我擴展一個現有的C/C++項目時,我覺得有必要利用所有漂亮的功能和數據類型來編寫它的Python風格。如果有一個簡單的方法,那將是非常好的。從C++或C調用一個cython編譯函數有沒有一種簡單的方法來做到這一點,因爲我似乎無法在文檔中找到它。或者,也許我不應該使用Cython這個?在C/C++中的Cython
問候雅各布
我一直在使用Cython的幾個項目。我看到很多有關將C++和C包含到您的Cython代碼中的文檔。有時候,當我擴展一個現有的C/C++項目時,我覺得有必要利用所有漂亮的功能和數據類型來編寫它的Python風格。如果有一個簡單的方法,那將是非常好的。從C++或C調用一個cython編譯函數有沒有一種簡單的方法來做到這一點,因爲我似乎無法在文檔中找到它。或者,也許我不應該使用Cython這個?在C/C++中的Cython
問候雅各布
我有你的問題,並@ fabrizioM的answer較多受約束的版本應該爲你工作:
與用Cython的訣竅是使用關鍵字公共
cdef public double cython_function(double value, double value2):
return value + value2
用這種方法可以直接鏈接
當作普通的C庫:
#ifdef __cplusplus {
extern "C"
#endif
double cython_function(double value, double value2);
#ifdef __cplusplus {
}
#endif
是的。此外,您必須在C/C++文件中#include「../ yourext_api.h」文件(使用public關鍵字時由Cython生成),以便能夠使用C端的'cython_function' ... –
@Golgauth這不就是第二個代碼片斷的用途嗎? – Adam
嗯,是......;) –
我有一個類似的問題,我認爲這是你在找什麼:http://stackoverflow.com/a/5721123/321772 – Adam
感謝:-)你應該把它作爲答案張貼,所以我可以信任你 –