我有一个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中使用此函数而无需定义或使用类型映射?
提前感谢您的快速回复!
答案 0 :(得分:1)
我发现了(weee!) 有一个new_charpp方法可以创建正确的数据类型。显然,对于每个基元和常用数据类型(new_longpp,new_longlongpp,new_intpp等等),您有几种方法。
之后,您可以使用charpp_value(...)
从此变量中读取正确的内容