如何在 Ruby 中使用输出参数而不使用 swig 的类型映射

发布于 2024-10-01 18:15:08 字数 505 浏览 4 评论 0原文

我有一个在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半枫 2024-10-08 18:15:08

我找到了(哎呀!)
有一个 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(...)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文