Swig - упаковка C struct - PullRequest
       20

Swig - упаковка C struct

2 голосов
/ 20 апреля 2010

Я пытаюсь написать перенос Python для кода C, который использует struct.

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 Ответ

2 голосов
/ 21 апреля 2010

Попробуйте это:

%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"
...