【木头Cocos2d-x 031】Lua篇(第06章):Lua调用C++的函数
public: static int getNumber(int num); int HelloLua::getNumber( int num ) { CCLOG("getNumber num = %d", num); return num + 1; }
public: static int cpp_GetNumber(lua_State* pL);
int HelloLua::cpp_GetNumber( lua_State* pL ) { /* 从栈顶中取一个值 */ int num = (int)lua_tonumber(pL, 1);
/* 调用getNumber函数,将返回值入栈 */ lua_pushnumber(pL, getNumber(num));
/* 返回值个数,getNumber只有一个返回值,所以返回1 */ return 1; }
------------------------------------------- 来自2014.10.15的补充 begin-------------------------
十分抱歉,万分抱歉!我漏了很重要的内容,那就是lua中如何调用c++的函数的?
今天看到有人评论,然后今晚再次看了一下,才发现,真的漏了!
补充如下:
现在,要开始使用这两个函数了,修改HelloLua的init函数:bool HelloLua::init() { lua_State* pL = lua_open(); luaopen_base(pL);
/* C++的函数和封装函数都必须是静态的,不知道可不可以不是静态的?当然不可以 */ lua_register(pL, "cpp_GetNumber", cpp_GetNumber); luaL_dofile(pL, "helloLua.lua"); lua_close(pL); return true; }
--------------------------------------- 来自2014.10.15的补充 end-------------------------