我花了几天时间弄清楚如何包装C结构,但到目前为止还没有成功。
这是我的C函数:
abc_return_t
abc_method (abc_context ** context,
int set_from_os)
abc_context
是一个结构。我应该在interface(.i)
文件中写什么,以便从Ruby传递**
上下文?现在我可以使用my_module.abc_method(nil,1)
并获得结果,但我无法传递上下文。当我传递像my_module.abc_method(context,1)
这样的上下文参数时,我收到错误Expected argument 0 of type abc_context **, but got String "context"
。
我查看了其他Stack Overflow问题,其中大多数都指向了我可以创建类似my_module.name_of_struct()
之类的结构的方向。不幸的是,这对我不起作用。对,我没有在.i文件中写任何东西,以便swig包装函数。
以下是abc.i
文件:
%module my_module
%{
#include "/usr/local/include/abc.h"
%}
%include "/usr/local/include/abc.h"