在cython中包装具有多个输出的库函数

时间:2011-03-18 17:48:56

标签: cython

我正在尝试使用Cython包装虚拟C库。

这是图书馆的.h文件......

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

使用cython包装前两个函数我没有问题,但是在包装第三个函数时遇到了问题。

第三个函数将x除以y,并将第三个指针中的答案返回给double参数。函数本身返回成功或失败。

我想要包装的实际库充满了这种情况,它返回状态代码,并通过指针返回函数的实际输出。

包装此类函数的正确方法是什么?

谢谢, 〜埃里克

1 个答案:

答案 0 :(得分: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