如何在 Ruby 中使用输出参数而不使用 swig 的类型映射
我有一个在 Ruby 中使用的 Swig 包装的 C 库。我无法控制 Swig 或任何接口定义,因为这是由接口供应商完成的。
不,我发现库中有一个函数定义了 char ** 输出参数(等等)。示例函数定义:
void get_information(char * input, char **output, int someint)
当然,我在 Ruby 中的第一次尝试是:
output_thing = ''
get_information "input", output_thing, 123
puts output_thing
这导致了错误消息
预期参数 1 类型为 char **,但得到字符串“”
由于没有 Swig 经验,我有点卡住了。是否可以在不定义或使用类型映射的情况下在 Swig 中使用此函数?
预先感谢您的快速回复!
I have a Swig-wrapped C library that I use in Ruby. I have no control over Swig or any interface definitions since that is done by the vendor of the interface.
No I find that there's a function in the library that has a char ** output parameter defined (among others). Example function definition:
void get_information(char * input, char **output, int someint)
Of course, my first attempt in Ruby was:
output_thing = ''
get_information "input", output_thing, 123
puts output_thing
This resulted in the error message
Expected argument 1 of type char **, but got String ""
Having no experience in Swig, I'm kindof stuck. Is it possible to make use of this function in Swig without defining or using a typemap?
Thanks in advance for your quick responses!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了(哎呀!)
有一个 new_charpp 方法可以创建正确的数据类型。显然,对于每个原语和常用数据类型(new_longpp、new_longlongpp、new_intpp 等),您都有几个这样的方法。
之后,您可以使用 charpp_value(...) 从此变量中读取正确的内容
I found it (weee!)
There is a new_charpp method that creates the correct datatype. Apparently you have several of these methods for each of the primitives and commonly used datatypes (new_longpp, new_longlongpp, new_intpp et cetera).
Afterwards, you can read the correct contents from this variable using charpp_value(...)