Swig - 包装C结构

时间:2010-04-20 15:35:25

标签: python c struct swig

我正在尝试为使用struct的C代码编写Python包。

modules.c:

struct foo
{
    int a;
};

struct foo bar;

modulues.i

%module nepal
%{
    struct foo
    {
        int a;
    }
%}

extern struct foo bar;

但在编译期间,我收到错误:

在函数'Swig_var_bar_set'中: 错误:'bar'未声明(首次使用此功能)

你能帮助我如何正确定义导出结构变量吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

%module nepal
%{
    struct foo
    {
        int a;
    };

    extern struct foo bar;
%}

struct foo
{
    int a;
};

extern struct foo bar;

%{%}中的代码插入到包装器中,并解析它下面的代码以创建包装器。将这一切放在头文件中更容易,因此它不是那么重复:

<强> modules.h

struct foo
{
    int a;
};

extern struct foo bar;

<强> modules.c

#include "modules.h"
struct foo bar;

<强> modules.i

%module nepal
%{
    #include "modules.h"
%}

%include "modules.h"