обертывание библиотечных функций с несколькими выходами в Cython - PullRequest
1 голос
/ 18 марта 2011

Я пытаюсь обернуть фиктивную библиотеку C с помощью Cython.

Вот файл .h библиотеки ...

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

У меня нет проблем с оборачиванием первого2 функции с Cython, но у меня проблемы с переносом 3-го.

Третья функция делит x на y и возвращает ответ в третьем указателе на двойной аргумент.Сама функция возвращает либо успех, либо неудачу.

Фактическая библиотека, которую я хотел бы обернуть, полна таких ситуаций, когда она возвращает код состояния, а фактический вывод функций возвращается через указатели.

Как правильно обернуть такие функции?

Спасибо, ~ Эрик

1 Ответ

1 голос
/ 19 марта 2011

Вы должны разместить ответ в стеке. 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
...