用 SWIG 包装 C 结构

Posted

技术标签:

【中文标题】用 SWIG 包装 C 结构【英文标题】:Wrapping C structs with SWIG 【发布时间】:2009-11-09 12:31:45 【问题描述】:

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

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

%module example
%include<example.h>

【讨论】:

以上是关于用 SWIG 包装 C 结构的主要内容,如果未能解决你的问题,请参考以下文章

SWIG Python - 包装一个需要指向结构的双指针的函数

swig-php 包装器使用指针,c 代码是一个数组

用 SWIG array_class 包装字节数组数据

带有指针的C结构,如何Swig?

如何使用 SWIG 在 C++ API 上生成 C 包装器? [复制]

Python:SWIG:包装对结构的访问