經(jīng)過(guò)前面幾章的介紹,相信大家對(duì)Lua的堆棧已經(jīng)比較熟悉了,如果還不是很熟悉的朋友,建議多看幾遍前面的教程,或者多敲幾次代碼。
-- helloLua.lua文件
myName = "beauty girl"
helloTable = {name = "mutou", IQ = 125}
function helloAdd(num1, num2)
return (num1 + num2)
end;
/* C++調(diào)用lua的函數(shù) */
void HelloLua::demo3() {
lua_State* pL = lua_open();
luaopen_base(pL);
/* 執(zhí)行腳本 */
luaL_dofile(pL, "helloLua.lua");
/* 把helloAdd函數(shù)對(duì)象放到棧中 */
lua_getglobal(pL, "helloAdd");
/* 把函數(shù)所需要的參數(shù)入棧 */
lua_pushnumber(pL, 10);
lua_pushnumber(pL, 5);
/*
執(zhí)行函數(shù),第一個(gè)參數(shù)表示函數(shù)的參數(shù)個(gè)數(shù),第二個(gè)參數(shù)表示函數(shù)返回值個(gè)數(shù) ,
Lua會(huì)先去堆棧取出參數(shù),然后再取出函數(shù)對(duì)象,開(kāi)始執(zhí)行函數(shù)
*/
lua_call(pL, 2, 1);
int iResult = lua_tonumber(pL, -1);
CCLOG("iResult = %d", iResult);
}