我想知道为了处理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