2009-11-09 3 views
1

j'ai fichier d'en-tête C contenant la définition de type:Emballage C struct avec SWIG

// example.h 
typedef struct Vertex { 
    int color; 
} Vertex; 

je tente d'envelopper cette structure avec SWIG, mais apparemment je suis en train de faire quelque chose de mal. Mon fichier d'interface SWIG ressemble

// example.i 
%module example 
%inline %{ 
#include "example.h" 
} 

Mais si je copie le contenu de mon fichier d'en-tête dans mon fichier d'interface afin que celui-ci ressemble à

%module example 

%inline %{ 
typedef struct Vertex { 
    int color; 
} Vertex; 
%} 

je peux accéder à la struct de Ruby dans ce qui suit chemin

irb> require 'example' 
# => true 
irb> Examlpe::Vertex 
# => Vertex 

Existe-t-il un moyen d'envelopper automatiquement un fichier d'en-tête? Je ne veux pas copier et coller le contenu du fichier d'en-tête dans le fichier d'interface chaque fois que je le change.

Merci d'avance pour votre aide.

- t6d

Répondre

3

Il a été un moment que je Swig, mais si je me souviens% en ligne est utilisé pour passer à travers la partie en ligne directement au compilateur; Swig lui-même ne le voit pas, Ce que je pense que vous avez besoin est:

%module example 
%include<example.h>