在代码示例中: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);
在Lua 5.2中,LUA_GLOBALSINDEX不再存在。相反,它有lua_setglobal()和lua_getglobal()。
我认为这是正确的:
lua_pushvalue(L, methods);
lua_setglobal(L, T::className);
...是:
的正确替代品lua_pushstring(L, T::className);
lua_pushvalue(L, methods);
lua_settable(L, LUA_GLOBALSINDEX);
我对Lua太新了以确定,我已经8个月没用过了。看一下文档,我思考这是正确的,但是想要验证。
答案 0 :(得分:4)
而不是lua_settable(L,LUA_GLOBALSINDEX);
使用lua_setglobal(L,T::className);
。这适用于Lua 5.1和5.2。