我正在尝试使用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参数。函数本身返回成功或失败。
我想要包装的实际库充满了这种情况,它返回状态代码,并通过指针返回函数的实际输出。
包装此类函数的正确方法是什么?
谢谢, 〜埃里克
答案 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