1

Cython を使用してダミーの C ライブラリをラップしようとしています。

これがライブラリの.hファイルです...

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

最初の 2 つの関数を cython でラップするのに問題はありませんが、3 番目の関数をラップするのに問題があります。

3 番目の関数は、x を y で除算し、double 引数への 3 番目のポインターで答えを返します。関数自体は、成功または失敗のいずれかを返します。

私がラップしたい実際のライブラリは、ステータス コードを返し、関数の実際の出力がポインタを介して返される、このような状況でいっぱいです。

そのような関数をラップする適切な方法は何ですか?

ありがとう、〜エリック

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 に答える