1
私は、一部のクラスがstd::vector<T>
を返すメソッドを持つC++ライブラリを持っています。ここで、T
はライブラリのカスタムクラスです。この出力をPythonリストにラップする方法はありますか?戻りベクトル<T> swig
よろしくお願いいたします。
私は、一部のクラスがstd::vector<T>
を返すメソッドを持つC++ライブラリを持っています。ここで、T
はライブラリのカスタムクラスです。この出力をPythonリストにラップする方法はありますか?戻りベクトル<T> swig
よろしくお願いいたします。
はい、確かに可能です。
C++クラスの公開インターフェイスはwrapped by SWIGです。
そして、SWIGは以下のように使用することができますstd::vector
ためtypemapsを持っています
%include "typemaps.i"
%include "std_vector.i"
%{
#include "MyClass.h"
%}
%template(MyVector) std::vector<MyClass>;
私はあなたが提案し何やってんだけど、Pythonで述べたメソッドの戻りとして、私は次のことを見ている: < swigオブジェクトタイプ 'std :: vector < MyClass > *' at 0x7fba76e1d570> swig/pythonが 'std :: vector < MyClass > *'型のメモリリークを検出しましたが、デストラクタは見つかりませんでした。 何か不足していますか? – user20679
上のエラーは、.iファイルの書式設定エラーが原因です。結局のところ、リストを復元するために実際のtypemapを書く必要がありました(実際に返されるオブジェクトはPythonリストではなく、MyVector型オブジェクトです。リストとして動作します)。私は完全なソリューションを投稿します。ありがとうございました。 – user20679