SWIG を使用して次の C インターフェイスをラップし、Python からアクセスしています。
void some_method(char **output, int paramA, const char *paramB, int paramC);
C での実装では、実行時に malloc() を使用してポインタ *output にメモリを割り当てます。他のパラメーターは読み取り専用で、メソッドに必要な追加情報を伝えます。
対応する SWIG インターフェース ファイルはどのようになりますか?
このケースは、C で動的に割り当てられる「出力」パラメーターのみを渡し、他のパラメーターを渡さない場合は非常に単純です。つまり、私の C インターフェイスが次のようなもので、その実装が example.c (たとえば) の場合:
void some_method(char **output);
次に、このスタックオーバーフロー スレッドで説明されているように、SWIG インターフェース ファイルは単純です。
%module example
%include<cstring.i>
%cstring_output_allocate(char **output, free(*$1));
%{
extern void some_method(char **output);
%}
%include example.c
上記は複数のパラメーターでは機能しません。複数のパラメーターを渡す方法と、パラメーターの 1 つ (この場合は「出力」パラメーター) の動的割り当てを許可する方法。