关于在lua中调用c++函数的问题、、、、求高手! 100

这个是lua文件的代码,很简单、localnum=cpp_GetNumber(101);其中,cpp_GetNumber();则是一个在C++中自定义的函数。------... 这个是lua文件的代码,很简单、

local num = cpp_GetNumber(101);
其中, cpp_GetNumber(); 则是一个在C++中自定义的函数。

---------------------------------------------------------------------------------------------

下面这个则是C++的代码,也就是自定义的cpp_GetNumber();函数。

int HelloLua::F( int num )
{
return num ;
}

int HelloLua::cpp_GetNumber( lua_State* pL )
{
int num = (int)lua_tonumber(pL, 1);
lua_pushnumber(pL, F(num));
return 1;
}

---------------------------------------------------------------------------------------------

问题1 :
cpp_GetNumber( lua_State* pL ) 这个函数,它的形参不是需要一个 lua_State* pL 吗?
那为什么在lua文件调用这个函数,为什么可以传一个101进去?101不是一个整数类型吗?

问题2:
为什么cpp_GetNumber这个函数它的返回值一定要定义成int的,不能定义成void的?

问题3:
int num = (int)lua_tonumber(pL, 1);

lua_pushnumber(pL, F(num));

为什么调用这2句代码,值就可以赋给num ?? (我说的这个num指的是lua文件里的那个num。 指这里的num。 ---------------> local num = cpp_GetNumber(101);
展开
 我来答
百度网友2b4fd6b94
2013-11-24 · TA获得超过109个赞
知道小有建树答主
回答量:88
采纳率:0%
帮助的人:99.3万
展开全部
第一个问题:
你不要把lua 源代码里面的参数和lua扩裂亩侍展的c函数里面的参数混淆了。lua那边,是不管什么指针的(那个pLc这边函数里面的参数,当然要求是pL指针。

第二个问题:
对于一个c函数来说,它必须返回一个int值。这个int值告诉lua,它返回几个参数到lua里面去(可以是返回0个参数;如果是0,那么就返回0)。
第三个问题:
lua_tonumber就是把lua堆栈里的相应索引的值作为一个整耐敏数返回。你这条语句里就肆吵是把lua那边传给来的参数赋给了num变量。
百度网友5c4408c
2013-11-23
知道答主
回答量:9
采纳率:0%
帮助的人:5.8万
展开全部
  1. 你的形参指针类型,也就是一个地址,在机器里,地址是用整数表示扮饥的。传一个整数进去,是不会报错的。


  2. 我猜你空亏的这个函数应该在类 HelloLua 已经定义了原型,在类外实现时,只能按照原型来实现,如果修改返回类型,就变成了重斗缺神新定义,也就是重载,在类外是不允许重载原型的。


  3. 你说的是不是这样:int num; lua_pushnumber(pL,F(num));

    num 里应该是初始时的默认值,应为 F 函数是值传递,不会改变num的值,除非 F 函数参数为指针类型,而且返回类型为 指针类型。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式