我用ruby2.0.0p0`s fiddle 类去封装一个c的dll, 当我用fiddle::CStruct去封装一个C struct的时候遇到了一个奇怪的问题.
精简的代码如下:
require "fiddle"require "fiddle/import"require 'fiddle/struct'types=[Fiddle::TYPE_INT,Fiddle::TYPE_INT]members = ["id","name"]MyStruct = Fiddle::CStructBuilder.create(Fiddle::CStruct, types, members)obj = MyStruct.allocateputs obj.methodsputs obj.id
我打印了obj的methods, 结果包含了id 和 id= 这两个方法,可当我调用id或id=方法时,它抛出了一个异常 “ruby-2.0.0-p0/lib/ruby/2.0.0/fiddle/struct.rb:59:in block (3 levels) in create’: undefined method[]’ for nil:NilClass (NoMethodError)” . 我不知道问题出在哪里。
原文地址:Ruby::Fiddle::CStruct undefined method `[]', 感谢原作者分享。 影子依旧可以相亲相爱。哪一块骨骼最温暖,总能一击即中。