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#的条件编译,以便在不同版本下都顺利运行?

[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 版也值得参考。