我想知道爲了處理getFoo需要什麼SWIG接口文件的變化返回一個指向一個自定義結構數組的指針(sender_id_t)。沒有任何特殊的SWIG接口代碼,我只能得到Java方面的指針。我怎樣才能把這個指針變成我可以循環或迭代的東西(在Java中),這樣我就可以得到每個sender_id_t的id值?感謝任何建議。使用SWIG來處理C函數返回一個指向Java中結構數組的指針
C語言結構:
typedef unsigned char id_v1_t[32];
typedef id_v1_t id_t;
%rename (Sample) sender_id_t_;
struct sender_id_t_ {
id_t id;
uint32_t phy_idx;
};
C功能:
//This will return a pointer to an array of sender_id_t data. The number of elements is retrieved from a separate call.
sender_id_t* getFoo(resultset_t* resultset);
例外:
[exec] test_wrap.c: In function `new_foo_array':
[exec] test_wrap.c:785: error: invalid application of `sizeof' to incomplete type `sender_id_t_'
[exec] test_wrap.c: At top level:
[exec] test_wrap.c:792: error: return type is an incomplete type
[exec] test_wrap.c: In function `foo_array_getitem':
[exec] test_wrap.c:793: error: invalid use of undefined type `struct sender_id_t_'
[exec] test_wrap.c:793: error: dereferencing pointer to incomplete type
[exec] test_wrap.c:793: warning: `return' with a value, in function returning void
[exec] test_wrap.c: At top level:
[exec] test_wrap.c:795: error: parameter `value' has incomplete type
[exec] test_wrap.c: In function `foo_array_setitem':
感謝這樣一個完整的例子。我能夠很好地編譯你的示例代碼。當我嘗試使用我的結構(sender_id_t_)時,遇到了將sizeof應用於sender_id_t_.id屬性的問題。我在上面的問題中粘貼了編譯錯誤。有任何想法嗎? – c12 2011-12-19 03:03:17