2010-04-20 148 views
2

我想爲使用struct的C代碼編寫Python包裝。Swig - 包裝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': 錯誤:「欄'未申報(首次使用此功能)

你能幫助我如何正確定義導出結構變量嗎?

+1

您是否考慮過使用'ctypes'模塊代替SWIG?這很容易。 – 2010-04-20 16:18:22

回答

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"