用SWIG包装C结构

我有包含以下类型定义的C头文件:

// example.h typedef struct Vertex { int color; } Vertex; 

我尝试用SWIG包装这个结构,但显然我做错了。 我的SWIG界面文件看起来像

 // example.i %module example %inline %{ #include "example.h" } 

但是,如果我将头文件的内容复制到我的接口文件中,以便后者看起来像

 %module example %inline %{ typedef struct Vertex { int color; } Vertex; %} 

我可以通过以下方式从Ruby访问结构

 irb> require 'example' # => true irb> Examlpe::Vertex # => Vertex 

有没有办法自动包装头文件? 我不希望每次更改时都将头文件的内容复制并粘贴到接口文件中。

在此先感谢您的帮助。

– t6d

自从我使用Swig以来已经有一段时间了,但我记得%inline用于直接将内联部分传递给编译器; Swig本身看不到它,我认为你需要的是:

 %module example %include