2017-02-02 4 views
0

__attribute__((packed,aligned(1)))で定義されているC構造体をSWIGにラップするにはどうすればよいですか?__attribute __((packed、aligned(1))))で定義されたC構造体をラップする方法はありますか?

+0

ラップはどういう意味ですか?あなたは「整列していない安全な方法で開梱する」という意味ですか? memcpy – hanshenrik

+0

swigを使ってその構造体をラップしたいと思います。 –

+0

しかしswigは何らかのエラーを表示します(入力(3)の構文エラー) –

答えて

0

あなたは離れて、単に#define、この作品を作るためにほとんど何もしないように属性を必要とする:意図したとおりに

%module test 

#define __attribute__(x) 
struct foo {} __attribute__((packed,aligned(1))); 

は、解析して動作します。

この理由は、SWIGがオブジェクトのレイアウトやサイズを気にするコードを生成しないためです。また、それについても何らかの前提を作るコードを生成しません。代わりに、すべてのアクセス/ malloc/newはコンパイラによって処理され、生成されたコードを通常通りコンパイルします。

したがって、モジュールをコンパイルするコンパイラに見られる構造体の定義が正しいことを確認する限り、問題は発生しません。

+0

これは多くの助けになりました。ありがとうございました。 –

関連する問題