■45621 / inTopicNo.1) |
SWIGでvector のvector |
□投稿者/ 96 (3回)-(2010/01/15(Fri) 23:52:31)
|
分類:[C#]
開発環境;Windows XP 使用言語:C#,C++ SWIG:swigwin-1.3.40
現在,私はC#でC++のクラスやメソッドを使うためにSWIGを使おうとしているのですが・・・・ どうにも上手くいきません.
今立ちはだかっている問題はC++側で・・・・・ vector< vector<int> > myVector; といったC++のSTLのVectorクラスを入れ子?で使っている場合です.
一応,SWIG自体はC++のSTLのVectorクラスに対応しているようで,
//Sample1.cpp //〜省略〜 vector<int> myVector; //〜省略〜
の場合,インターフェースを
//Sample1.i
%module Sample1DLL
%{ #include "Sample1.h" %}
%include "std_vector.i" namespace std { %template(VectorInt) vector<int>; };
%include "Sample1.h"
とするとでできるようなのですが・・・・・・
「vector< vector<int> > myVector;」の場合,どうやるのでしょうか?
参考サイト(注意:英語) http://old.nabble.com/Wrapping-a-vector-of-vector-of-ints-with-CSharp-td17573713.html によると, //Sample2.cpp //〜省略〜 vector< vector<int> > myVector; //〜省略〜
とした場合,
//Sample2.i
%module Sample2DLL
%{ #include "Sample2.h" %}
%include "std_vector.i" namespace std { %template(VInt) vector<int>; SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(VectorInt, vector<int>); %template(VVInt) vector<VInt>; };
%include "Sample2.h"
とすればいいらしいのですが・・・・ まず,SWIG_STD_VECTOR_SPECIALIZE_MINIMUM(VectorInt, vector<int>);が何をしているのかが分からないのと コマンドラインからの
swig.exe -csharp -c++ Sample2.i
は通るのですが,DLL作成するためのコンパイルで
'VInt' : 定義されていない識別子です。
といったエラーを吐きます・・・・・.
どうしたら 「vector< vector<int> > myVector;」をC#に持っていけるでしょうか? もし,何かご存知の方がいらっしゃいましたらご助力をお願いできないでしょうか? 宜しくお願いします!!
|
|