C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: SWIG を使ってC++のクラスやメソッドをC#で使いたいの


(過去ログ 77 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■45582 / inTopicNo.1)  SWIG を使ってC++のクラスやメソッドをC#で使いたいの
  
□投稿者/ 96 (1回)-(2010/01/15(Fri) 04:15:42)

分類:[C#] 

現在,私はC++とC#を使ってアプリケーションを作っております.

C#からC++で定義したクラスやメソッドを利用するために「SWIG」を利用しようと考えているのですが,

コマンドプロンプトで
「swig.exe -csharp -c++ (インターフェースファイル)」
を実行すると

「Nested struct not currently supported」というエラーが出てしまい困っています.

エラーの起こった場所のソースは
class myClass{
  struct myStruct {
    int d;
    int s;
  };
};
といった感じに
「クラスの宣言の中で構造体の宣言」をおこなっおり,
自分で調べた結果,SWIGは入れ子のクラスや構造体が使えないようです.
以下のような「クラスの入れ子」の場合
class A {
 class B {
 }
}
インターフェースファイルで.
class A {

}
class A::B {

}
このように記述することができるようなのですが・・・・・

今回のような「クラス内で構造体を宣言する」ような場合の回避方法は何か無いのでしょうか??
SWIGのドキュメントを読んだのですが,書いてません・・・・.

c++側を改変すれば,解決するとは思うのですが,なにぶんC++は私が組んだものではないので,
厳しいものがあるのです.


何かご存知の方がいらっしゃいましたらヒントだけでも構わないので,ご助力をお願いできないでしょうか?
宜しくお願いします.

引用返信 編集キー/
■45583 / inTopicNo.2)  Re[1]: SWIG を使ってC++のクラスやメソッドをC#で使いたいの
□投稿者/ επιστημη (2391回)-(2010/01/15(Fri) 06:01:05)
επιστημη さんの Web サイト
> class A {
>  class B {
>  }
> }

単にinner-classを外に追い出し、

class B {
};

class A {
};

とするだけでよさそ。
追い出したことによって他クラス等の名前とカブるなら適宜改名。

引用返信 編集キー/
■45620 / inTopicNo.3)  Re[2]: SWIG を使ってC++のクラスやメソッドをC#で使いたいの
□投稿者/ 96 (2回)-(2010/01/15(Fri) 23:14:29)
返事ありがとうございます
クラスの入れ子なら.
class B {
};

class A {
};
でもできるかもしれないですね.
今回の「クラス内で構造体の宣言」を行う場合ですが・・・・・・・

元のc++ソースをいじってしまうので,根本的な解決にはなっていないのですが,

struct myStruct_dummy {
    int d;
    int s;
  };

class myClass{

  typedef myStruct_dummy myStruct;
};

とすることで,宣言部分の改変だけですみます.
SWIG難しい・・・・・.

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -