龙二少爷 2009-10-15 15:24
浏览 195
已采纳

ruby /DL 升级到1.9.1的问题

下面几个小程序在ruby 1.8上都是顺利运行的,升级到1.9.1之后,发生许多method no defined的错误

[code]
ptr = DL.malloc(DL.sizeof('IIIIPPPP'))
[/code]

错误是: undefined method `sizeof' for DL:Module,在DL::Importer下是有一个sizeof,但是DL::Importer.sizeof('IIIIPPPP') 会报can not partser type..的错误

[code]
ptr = [0,1,0,0].pack('IIII').to_ptr
[/code]

这段代码也不能工作了,错误时to_ptr no define

有时候ruby一升级,就意味着许多东西要重新折腾,这些问题该如何fix呢?

不知道ruby有没有类似C#的条件编译,以便在不同版本下都顺利运行?

  • 写回答

1条回答 默认 最新

  • xenocide 2009-10-21 02:15
    关注

    [code="ruby"]include DL
    CPtr.malloc SIZEOF_INT*4 + SIZEOF_VOIDP*4

    比较丑……如果找到更好方法请通知我……

    p = CPtr[[0,1,0,0].pack 'IIII']

    如果要地址整数,p.ptr,或者直接用 DL.wrap[/code]

    DL 在 1.9 被 yugui 姐姐重写了 ……
    刚开始时文档和注释都没有(因为要保持和代码一致,把文档放在最后做)

    比较好的参考是源代码目录中的 ext/dl/test 和 ext/win32ole/sample

    1.9 是 major version,不相容的部分也多,和 1.8 之间的区别就像 python 3 之于 python 2.5 ……

    某个总结:
    [url]http://www.elctech.com/articles/ruby-1-9-compatibility-a-three-step-ladder-to-bliss[/url]

    另外镐头书 1.9 版也值得参考。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置