如何在不使用swig的typemap的情况下在Ruby中使用输出参数

时间:2010-11-11 15:02:02

标签: ruby swig

我有一个Swig包装的C库,我在Ruby中使用它。我无法控制Swig或任何接口定义,因为这是由接口的供应商完成的。

不,我发现库中有一个函数定义了char **输出参数(等等)。功能定义示例:

void get_information(char * input, char **output, int someint)

当然,我在Ruby的第一次尝试是:

output_thing = ''
get_information "input", output_thing, 123
puts output_thing

这导致了错误消息

  

char **类型的预期参数1,但得到了字符串“”

没有Swig的经验,我有点卡住了。是否可以在Swig中使用此函数而无需定义或使用类型映射?

提前感谢您的快速回复!

1 个答案:

答案 0 :(得分:1)

我发现了(weee!) 有一个new_charpp方法可以创建正确的数据类型。显然,对于每个基元和常用数据类型(new_longpp,new_longlongpp,new_intpp等等),您有几种方法。

之后,您可以使用charpp_value(...)

从此变量中读取正确的内容