2012-01-29 6 views
6

कोड उदाहरण में: http://lua-users.org/wiki/SimplerCppBindingलुआ 5.2 करने के लिए Porting, LUA_GLOBALSINDEX मुसीबत

वहाँ कोड है:

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); 

लुआ 5.2 में, LUA_GLOBALSINDEX अब मौजूद नहीं है। इसके बजाए, इसमें lua_setglobal() और lua_getglobal() है।


Am मैं यह सोच कर कि में ठीक करें:

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

मुझे यकीन है कि होने के लिए भी लुआ के लिए नया हूँ, मैं हेवन:

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

... के लिए सही प्रतिस्थापन है इसे 8 महीने तक इस्तेमाल नहीं किया। प्रलेखन को देखते हुए, मैं सोच रहा हूं यह सही है, लेकिन सत्यापन चाहते हैं।

उत्तर

4

lua_settable(L,LUA_GLOBALSINDEX); के बजाय lua_setglobal(L,T::className); का उपयोग करें। यह लुआ 5.1 और 5.2 दोनों में काम करता है।

+0

हां, लेकिन क्या मैं lua_setglobal() का सही उपयोग कर रहा हूं? lua_pushvalue (एल, विधियों); lua_setglobal (एल, टी :: कक्षा नाम); –

+0

@ कॉमसर्वेंट, यदि 'टी :: क्लासनाम '' char * 'है, तो हाँ। क्या यह काम नहीं कर रहा है? – lhf

संबंधित मुद्दे