初學lua,遇到註冊C/C++交互函數問題 在lua與C/C++交互時,C/C++的註冊Lua函數若是一個有返回類型(壓棧)而不是獲取類型的時候應該返回1而不是返回0,否則會出現在Lua中值為nil(空) 不太明白為什麼事這樣,如果有知道的大神,麻煩講解下 如: 應該是 而不是 否則在lua裡面調用 ...
初學lua,遇到註冊C/C++交互函數問題
在lua與C/C++交互時,C/C++的註冊Lua函數若是一個有返回類型(壓棧)而不是獲取類型的時候應該返回1而不是返回0,否則會出現在Lua中值為nil(空)
不太明白為什麼事這樣,如果有知道的大神,麻煩講解下
如:
應該是
int createClass(lua_State *L) { lua_class *newLua = (lua_class*)lua_newuserdata(L , sizeof(lua_class)); new (newLua) lua_class(); return 1; }
而不是
int createClass(lua_State *L) { lua_class *newLua = (lua_class*)lua_newuserdata(L , sizeof(lua_class)); new (newLua) lua_class(); return 0; }
否則在lua裡面調用這個函數,
local c = my_class.create() //假設這個函數名稱註冊為create,是my_class裡面的
第一個會正常調用,第二個會返回nil
註:在用lua申請記憶體時,如果是C++的,務必用new來初始化記憶體 new (對象名) 類名(形參表)