2011-03-18 65 views
1

我想用Cython包裝一個虛擬C庫。在cython中用多個輸出包裝庫函數

這裏是圖書館的.h文件...

void say_hello(char *name); 
double multiply(double x, double y); 
int divide(double x, double y, double *answer); 

我沒有問題,包裝前2個功能與用Cython但我有麻煩包裹第三名。

第三個函數將x除以y,並將第三個指針中的答案返回給雙參數。函數本身返回成功或失敗。

我想包裝的實際庫充滿了這種類型的情況,它返回一個狀態碼,並且函數的實際輸出通過指針返回。

什麼是包裝這些功能的正確方法?

感謝, 〜埃裏克

回答

1

你必須在棧上分配的答案。 Cython將負責其餘部分。

def divide(x, y): 
    cdef double answer 
    cdef int res 
    res = c_divide(x , y, &answer) 
    if res != 0: 
     throw ValueError("c_divide_error") 
    return answer 
+0

但是是否可以使用指針作爲參數,並更改指針中的值? – highBandWidth 2011-03-20 04:17:57

+0

是的,你必須正確導入除法功能 – fabrizioM 2011-03-20 04:41:48