• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua调用有返回值的c++

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

今天项目中要在lua中调用有返回值的c++函数,对于这方面从来没用做过,所以就开始各种照猫画虎~~~~

找到了audio.lua。看到了function audio.playMusic(filename, isLoop)方法。

修改sharedEngine:playMusic( filename, isLoop)成sharedEngine:playMusic( DCConfigParams.helperFind(filename), isLoop)

打开DCConfigParams.lua,添加如下代码:

-- 读取文件
function DCConfigParams.helperFind(str)
    return DCLuaConfigParams:helperFind(str)
end

找到项目中DataEye.cpp

找到了这个地方:

 tolua_cclass(tolua_S, "DCLuaConfigParams", "DCLuaConfigParams", "", NULL);
 tolua_beginmodule(tolua_S, "DCLuaConfigParams");
    tolua_function(tolua_S, "update", tolua_DataEye_DCConfigParams_update00);
    tolua_function(tolua_S, "getParameter", tolua_DataEye_DCConfigParams_getParameter00);
    tolua_function(tolua_S, "getParameter", tolua_DataEye_DCConfigParams_getParameter01);
    tolua_function(tolua_S, "getParameter", tolua_DataEye_DCConfigParams_getParameter02);

在下面添加:

  // 解密
  tolua_function(tolua_S, "helperFind", tolua_DataEye_DCConfigParams_helperFind03);

如图:

其实我自己是照着“tolua_function(tolua_S, "getParameter", tolua_DataEye_DCConfigParams_getParameter02)”方法去写的

接下来,坑来了,复制了tolua_DataEye_DCConfigParams_getParameter02的实现方法,修改后如下:

/* method: helperFind of class  DCLuaConfigParams */
#ifndef TOLUA_DISABLE_tolua_DataEye_DCConfigParams_helperFind03
static int tolua_DataEye_DCConfigParams_helperFind03(lua_State* tolua_S)
{
#ifndef TOLUA_RELEASE
 tolua_Error tolua_err;
 if (
     !tolua_isusertable(tolua_S,1,"DCLuaConfigParams",0,&tolua_err) ||
     !tolua_isnoobj(tolua_S,2,&tolua_err)
 )
  goto tolua_lerror;
 else
#endif
 {
  {
    const char *key = ((const char*)  tolua_tostring(tolua_S,2,0));
    tolua_pushstring(tolua_S, Nato::Find(key));
  }
 }
 return 0;
#ifndef TOLUA_RELEASE
 tolua_lerror:
 tolua_error(tolua_S,"#ferror in function 'helperFind'.",&tolua_err);
 return 0;
#endif
}
#endif //#ifndef TOLUA_DISABLE

运行的时候,lua调用到c++的方法了,可是lua就是接受不到Nato::Find(key)返回的值。  自个本事是菜鸟,所以就自己做各种打印测试,结果就是接受不到值,可是别的方法怎么就可以呢。

后面在网上找解决办法,没有相关的 ,  然后我就去找了别人是怎么调用的。后来才发现了问题。一个很小的地方,如下图:

原来是你往tolua_S里面放入几个值,下面的return就必须是几!!!后面改成return后,果断可以了....

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
写lua时需要注意的地方发布时间:2022-07-22
下一篇:
(三)Lua脚本语言入门(数组)发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap