SWIG と Numpy タイプマップを使用して、Python に作成した小さな C 関数をインターフェイスしようとしています
この関数は次のように定義されます
void nw(int* D, int Dx, int Dy, int* mat, int mx, int my, char *xstr, int xL,char *ystr, int yL);
そして、私のインターフェースファイルは次のとおりです
%module nw
%{
#define SWIG_FILE_WITH_INIT
#include "nw.h"
%}
%include "numpy.i"
%init %{
import_array();
%}
/*type maps for input arrays and strings*/
%apply (int* INPLACE_ARRAY2, int DIM1, int DIM2) {(int* D, int Dx, int Dy)}
%apply (int* IN_ARRAY2, int DIM1, int DIM2) {(int* mat, int mx, int my)}
%apply (char* IN_ARRAY, int DIM1){(char *xstr, int xL),(char *ystr, int yL)}
%include "nw.h"
それをテストするために、次の入力を使用しました
D = numpy.zeros((5,5),numpy.int)
mat = numpy.array([[1, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1]],numpy.int)
x = numpy.array(list("ABCD"))
y = numpy.array(list("ABCD"))
import nw
nw.nw(D,mat,x,y)
しかし、実行すると、次のようになります
TypeError: nw() takes exactly 6 arguments (4 given)
これらの引数がどのように定義されているかについて、私は本当に混乱しています。なぜ6つの引数があり、これらの引数が何であるかを知っている人はいますか? ありがとう!