星期二, 十月 03, 2006

LuaCOM for Lua 5.1.1 Fixed!

下面的话是我理解错误造成的!
除了上面引用的 LuaCOM - more questions 中所解决的问题外,LuaCOM 在 Lua 5.1.1中还有一个比较严重的问题,那就是 接口 参数传入有问题,具体原因还不太清楚,可能是lua 5.1与lua 5.0在传入函数参数时,对于堆栈的操作发生改变,类似于下面的代码需要修正!


1 多处定义的 self_param=1,并未在其他地方使用,干脆移除,要不干扰我们对代码的理解!
2 文中多处定义的 const int first_param = 2; 会在COM接口lua 5.1中造成第一个参数丢失,所以改成const int first_param = 1
3 const int num_params = luaCompat_getNumParams(L, 4) - 1; 由于first_param 从2改为1,所以把它改成const int num_params = luaCompat_getNumParams(L, 4);

基本上就这样,还需要更多的验证,另外对luacom的改动,需要内lua的VM机制与COM机制有比较深入的认识,说实话,这两件事情都比较复杂,另外由于luacom的不跨平台性,用ATL与luabind来重新实现应该是比较好的选择,代码量可能会更小!

修改,上面的方法存在问题,如果是用obj.method的方法来调用,需要用上面的方法修改,如果用obj:Method的方法来调用的话,就不需要改拉!

没有评论: