Портирование на Lua 5.2, проблема LUA_GLOBALSINDEX - PullRequest
6 голосов
/ 30 января 2012

В примере кода: 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 месяцев.Глядя на документацию, я думаю , что это правильно, но хотел бы проверить.

1 Ответ

4 голосов
/ 30 января 2012

Вместо lua_settable(L,LUA_GLOBALSINDEX); используйте lua_setglobal(L,T::className);.Это работает в Lua 5.1 и 5.2.

...