LUA C 交互 cocos

Lua与C交互详解
本文详细介绍了如何在C中注册函数供Lua使用,包括具体的代码实现过程,以及C调用Lua全局函数的方法。
注册 函数给Lua使用 lua_newtable(L); lua_pushstring(L, "callStaticMethod"); lua_pushcfunction(L, LuaCBridge::callCStaticMethod); lua_rawset(L, -3); lua_setglobal(L, "LuaCBridge"); int LuaCBridge::callCStaticMethod(lua_State* L) { log("callCStaticMethod======"); const char *action_key = lua_tostring(L, 1); const char *action_value = lua_tostring(L, 2); const char *content = lua_tostring(L,3); // log("actionkey=%s",action_key); if (!action_key || !action_value) { lua_newtable(L);//创建一个表格,放在栈顶 lua_pushstring(L, "res");//压入key lua_pushnumber(L, 1);//压入value lua_settable(L, -3);//弹出key,value,并设置到table里面去 return 1;//堆栈里现在就一个table.其他都被弹掉了。 } else { lua_newtable(L);//创建一个表格,放在栈顶 lua_pushstring(L, "res");//压入key lua_pushnumber(L, 1);//压入value lua_settable(L, -3);//弹出key,value,并设置到table里面去 lua_pushstring(L, "data");//压入key lua_pushstring(L, "json");//压入json格式data lua_settable(L,-3);//弹出key,value,并设置到table里面去 // lua_newtable(L);//压入value,也是一个table // lua_pushstring(L, "userId");//压入subtable的key // lua_pushnumber(L,53);//value // lua_settable(L,-3);//弹出key,value,并设置到subdata table // lua_settable(L,-3);//这时候父table的位置还是-3,弹key,value(subtable),并设置到table里去 // lua_pushstring(L, "mydata2");//同上 // lua_pushnumber(L,77); // lua_settable(L,-3); } return 1; } C调用lua全局函数 //c call lua /* 把CCallLua函数对象放到栈中 */ // lua_getglobal(L, "CCallLua"); // lua_newtable(L); // lua_pushstring(L, "res");//压入key // lua_pushnumber(L, 1);//压入value // lua_settable(L, -3);//弹出key,value,并设置到table里面去 // lua_pushstring(L, "data");//压入key // lua_pushstring(L, "jsondata");//压入json格式data // lua_settable(L, -3);//弹出key,value,并设置到table里面去 // /* // 执行函数,第一个参数表示函数的参数个数,第二个参数表示函数返回值个数 , // Lua会先去堆栈取出参数,然后再取出函数对象,开始执行函数 // */ // lua_call(L, 1, 1);

转载于:https://www.cnblogs.com/sujiehaojava/p/7762684.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值