Swig的手冊有點讓我困惑。我將我的C庫封裝到python中,以便我可以在python中測試我的C代碼。現在我想知道我怎麼能訪問在Python, 例如C指針,指向的地址,這是我的代碼有SWIG如何將緩衝區(char數組)和從C指向Python的指針?
typedef struct _buffer_t {
char buf[1024];
char *next_ptr;
} buffer_t;
void parse_buffer(buffer_t * buf_p) {
buf_p -> next_ptr ++;
}
我想要做的是下面,在C代碼
buffer_t my_buf;
my_buf.next_ptr = my_buf.buf;
parse_buffer(&my_buf);
expect_equal(&(my_buf.buf)+1, my_buf.next_ptr);
如何在Python中做同樣的事情? 導入SWIG包裝模塊後,我有python中的buffer_t類。
感謝您指出%extend選項。它的工作原理,我也用它來獲取指針地址。 – wei 2013-03-07 02:29:56
後續問題,我有一個像void my_func(void * ptr)的函數;我怎樣才能將我的buf_p-> next_ptr傳遞給它?我已經使用%apply void * {char * next_ptr}來替換類型。謝謝! – wei 2013-03-07 13:36:08