用SWIG包装C结构

时间:2009-11-09 12:31:45

标签: c ruby swig

我有包含以下类型定义的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

1 个答案:

答案 0 :(得分:3)

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

%module example
%include<example.h>