gpt4 book ai didi

ruby - 将 C 初始化的结构传递给嵌入式 Ruby 解释器

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:36 24 4
gpt4 key购买 nike

我在 C 中嵌入了 Ruby,我需要将在 C 中创建的结构传递给 Ruby 脚本,我想在其中使用结构值。我已经通过结构声明 rb_struct_define 和初始化 rb_struct_new 成功完成了这项工作,但我无法传递以 C 风格定义的结构(struct Address { ...}).

我得到一些建议,可以使用 Data_Wrap_struct 来完成,但我无法让它工作。

我的示例代码在这里:https://gist.github.com/1641269

最佳答案

无论您传递给 Ruby 方法的什么都需要是 Ruby 对象,您不能直接传递 C 结构对象。

您可以做的是为您的结构创建一个包装器对象,它将提供对其成员的 Ruby 代码访问。不幸的是,据我所知,没有办法根据结构的成员自动执行此操作。您必须编写 C 代码来定义适当的方法,如果您的结构有很多成员,这可能会有点乏味。

Data_Wrap_Struct 宏用于将 C 结构包装在 Ruby 对象中。然后,您可以在方法的实现中使用 Data_Get_Struct 来解包结构并获取数据。

Here's an example这应该有望为您指明正确的方向。

关于ruby - 将 C 初始化的结构传递给嵌入式 Ruby 解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com