在代码示例中:http://lua-users.org/wiki/SimplerCppBinding
这是守则:
lua_pushstring(L, T::className);
lua_pushvalue(L, methods);
lua_settable(L, LUA_GLOBALSINDEX); //<--- LUA_GLOBALSINDEX removed in Lua 5.2
lua_pushliteral(L, "__metatable");
lua_pushvalue(L, methods);
lua_settable(L, metatable); 在Lua5.2中,LUA_GLOBALSINDEX不再存在。相反,它有lua_setglobal()和lua_getglobal()。
我是否正确地认为:
lua_pushvalue(L, methods);
lua_setglobal(L, T::className);...is正确的替换:
lua_pushstring(L, T::className);
lua_pushvalue(L, methods);
lua_settable(L, LUA_GLOBALSINDEX);我对Lua太陌生了,我已经8个月没用过了。查看文档,我认为这是正确的,但希望得到验证。
发布于 2012-01-30 10:23:55
使用lua_settable(L,LUA_GLOBALSINDEX);代替lua_setglobal(L,T::className);。这在Lua 5.1和5.2中都有效。
https://stackoverflow.com/questions/9057943
复制相似问题