0

私は次のようなJavaでラップされた関数を持っています:

dosomething(SWIGTYPE_sometypeSTRUCT STRUCTtype);

元々Cコードでは、宣言は次のようになります。

dosomething(sometypeSTRUCT* structtype);

SWIGTYPEをJava関数に渡すにはどうすればよいですか。私がそうする場合:SWIGTYPE_sometypeSTRUCT something = new SWIGTYPE_sometypeSTRUCT();

動作しません。somthing=nullを設定した場合にのみ動作します。

4

1 に答える 1

1

問題は、関数が取るポインタが不透明な型であることを SWIG が認識している限り、SWIG が -の定義を見ていないことです。sometypeSTRUCTdosomething

SWIG が詳細を認識していない場合、それを意味のある形でラップすることはできません。唯一の安全な方法は、そのような型を使用して C で実行できることを実行させることです。

これを修正するには%include、おそらく構造体の定義を取り込むために使用するか、SWIG インターフェイス ファイル内で定義を提供する必要があります。

于 2012-10-12T20:45:29.997 に答える