1

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

这是库的 .h 文件...

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

我用 cython 包装前 2 个函数没有问题,但在包装第 3 个函数时遇到问题。

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

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

包装这些功能的正确方法是什么?

谢谢,~埃里克

4

1 回答 1

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
于 2011-03-19T09:45:53.670 回答