9.Lua调用c++函数获取返回值

1.Lua_pushstring(l,re);
lua_pushnumber(l,123);//压入栈顶

c++:
int CTestRe(lua_State *L)
{
lua_pushstring(L,"return value");
//在吧字符串压倒栈顶
return 1; //作为返回值传递给Lua,返回1个
}
/main
lua_register(lua,"CTestRe",CTestRe);

lua:
local re = CTestRe();
print("re = "..re);



2.Lua调用c++返回表(示例返回对象)
lua_newtable(l);//创建一个表格,放在栈顶
lua_pushstring(l,"name");//艳茹Key
lua_pushstring(l,"ccname");//压入value
//弹出Key,vlue,并设置到表,表在栈顶了作为返回值
lua_settable(l,-3);

c++:
int CTestRe(lua_State *L)
{
lua_newtable(L);
//插入key value
lua_pushstring(L,"name");
lua_pushstring(L,"xiaoming");
lua_settable(L,-3);//将值写入表中,注意这里讲值放入表中之后会将上面两个出栈
return 1; //注意这里要返回
}
/main
lua_register(lua,"CTestRe",CTestRe);

lua:
local tab= CTestRe();
print("name :"..tab["name"]);

传递多个表值:

c++改为:
int CTestRe(lua_State *L)
{
lua_newtable(L);
//插入key value
lua_pushstring(L,"name");
lua_pushstring(L,"xiaoming");
lua_settable(L,-3);//将值写入表中,注意这里讲值放入表中之后会将上面两个出栈

lua_pushstring(L,"age");
lua_pushnumber(L, 21);
lua_settable(L,-3);//注意这里还是-3
}
//main
//传递多个表值
lua_register(L, "CTestReTableN", CTestReTableN);

lua改为;
local tab= CTestReTableN();
print("name :"..tab["name"]);
print("age:"..tab["arg"]);


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值