使用 SWIG 将 c 结构映射到 ruby

发布于 2024-08-26 20:25:55 字数 573 浏览 6 评论 0原文

有没有人可以确认此处的描述是正确的?我的经验是我根本无法使用 Example::Vector.new

C/C++ 结构体被包装为 Ruby 类,带有访问器方法(即 “getters”和“setters”)对于所有 结构体成员。例如,这个 结构声明:

结构向量 {
 双 x、y;
};

被包装为 Vector 类,其中 Ruby 实例方法 x、x=、y 和 y=。 这些方法可用于访问 Ruby 中的数据结构如下:

<前><代码>$ irb irb(主):001:0>需要“示例” 真的 irb(主):002:0> f = 示例::Vector.new #<示例::矢量:0x4020b268> irb(主):003:0> FX = 10 零 irb(主):004:0> FX 10.0

Is there any body can confirm the description here is true? My experience is that I can not use Example::Vector.new at all.

C/C++ structs are wrapped as Ruby
classes, with accessor methods (i.e.
"getters" and "setters") for all of
the struct members. For example, this
struct declaration:

struct Vector {
 double x, y;
};

gets wrapped as a Vector class, with
Ruby instance methods x, x=, y and y=.
These methods can be used to access
structure data from Ruby as follows:

$ irb
irb(main):001:0> require 'Example'
true
irb(main):002:0> f = Example::Vector.new
#<Example::Vector:0x4020b268>
irb(main):003:0> f.x = 10
nil
irb(main):004:0> f.x
10.0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

给不了的爱 2024-09-02 20:25:55

解决了。我还应该需要在 example.i 文件中添加类型定义,仅包含 .h 是不够的。

Solved. I should also need add the type definition in the example.i file ,just include the .h is not enough.

开始看清了 2024-09-02 20:25:55

您可以尝试 CStruct:

gem install CStruct

rubyforge.org 上了解更多信息

You can try CStruct:

gem install CStruct

Learn more on rubyforge.org

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