使用 SWIG 将 c 结构映射到 ruby
有没有人可以确认此处的描述是正确的?我的经验是我根本无法使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解决了。我还应该需要在
example.i
文件中添加类型定义,仅包含.h
是不够的。Solved. I should also need add the type definition in the
example.i
file ,just include the.h
is not enough.您可以尝试 CStruct:
在 rubyforge.org 上了解更多信息
You can try CStruct:
Learn more on rubyforge.org