2010-04-20 7 views
2

J'essaye d'écrire Python wrap pour le code C qui utilise struct.Swig - wrapping C struct

modules.c:

struct foo 
{ 
    int a; 
}; 

struct foo bar; 

modulues.i

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

extern struct foo bar; 

Mais lors de la compilation on me donne l'erreur:

En fonction 'Swig_var_bar_set': erreur: « bar 'non déclaré (première utilisation dans cette fonction)

Pourriez-vous être si gentil pour m'aider à définir correctement la variable struct struct export?

+1

Avez-vous envisagé d'utiliser le module 'ctypes' à la place de SWIG? C'est beaucoup plus facile. –

Répondre

2

Essayez ceci:

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

    extern struct foo bar; 
%} 

struct foo 
{ 
    int a; 
}; 

extern struct foo bar; 

Le code en% {%} est insérée dans l'emballage et le code ci-dessous il est analysé pour créer l'emballage. Il est plus facile de mettre tout cela dans un fichier d'en-tête il est donc pas répétitif:

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"