Lua 64位过渡问题

9
我希望在这个问题上能给予一些帮助。有没有人在需要同时支持32位和64位的应用程序中使用过lua?我们目前正在转向64位,但是客户端编译的lua脚本存在问题,我们无法使用64位版本重新编译它们。因此,实际上我们需要能够在64位应用程序中加载使用32位lua编译的字节码文件。当我们尝试这样做时,会收到以下错误消息:
“virtual machine mismatch in test.bin.lua: size of size_t is 8 but read 4”
显然,这是一个明显的64位转换问题。困难之处在于,没有重新编译二进制文件的能力,我们该怎么解决它。
谢谢

2
请注意,不建议加载字节码。更安全和可移植的方法是加载源代码。 - Javier
2个回答

3

将lundump.c适应读取32位字节码文件并不难。我在Lua邮件列表中发布了一份路线图,如果您遇到问题,请给我发送电子邮件。


我对这个主题很感兴趣。你有邮件列表的链接吗? - Andreas
谢谢。实际上这很简单,因为我只需要修改lundump.c以处理4字节和8字节的size_t大小。在此修改后,我的程序的32位版本现在可以神奇地运行由64位版本生成的字节码,反之亦然。当然,如果真的有一个超过2^32字节数据的字符串,它在32位上就无法工作,但我认为这是不太可能的 :) 我还必须将Instruction typedef从unsigned long更改为unsigned int,因为指令应该是32位的。请注意,我仍在使用Lua 5.0.2。 - Andreas
@Andreas,感谢您的反馈。考虑升级到Lua 5.0.3,这是Lua 5.0的最后一个版本。 - lhf

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接