2012-01-29 30 views
6

Luaの5.2への移植:http://lua-users.org/wiki/SimplerCppBindingのコード例では、LUA_GLOBALSINDEXトラブル

はコードがある:Luaの5.2では

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_GLOBALSINDEXは存在しません。代わりに、lua_setglobal()とlua_getglobal()があります。私はそれを考えに修正


アム:

lua_pushstring(L, T::className); 
lua_pushvalue(L, methods); 
lua_settable(L, LUA_GLOBALSINDEX); 

私は確かにLuaのにあまりにも新たなんだ、私は避難所:

lua_pushvalue(L, methods); 
lua_setglobal(L, T::className); 

は...のための適切な交換です8ヶ月間それを使用していない。ドキュメントを見ると、私はと思っています。これは間違いありませんが、検証したいと思います。

答えて

4

lua_settable(L,LUA_GLOBALSINDEX);の代わりにlua_setglobal(L,T::className);を使用してください。これはLua 5.1と5.2の両方で動作します。

+0

はい、lua_setglobal()を正しく使用していますか? lua_pushvalue(L、メソッド); lua_setglobal(L、T :: className); –

+0

@ComServant、 'T :: className'が' char * 'ならば、yesです。それは働いていないのですか? – lhf

関連する問題