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

2025-05-14 08:44:33
推荐回答(2个)
回答(1):

第一个问题:
你不要把lua 源代码里面的参数和lua扩展的c函数里面的参数混淆了。lua那边,是不管什么指针的(那个pLc这边函数里面的参数,当然要求是pL指针。

第二个问题:
对于一个c函数来说,它必须返回一个int值。这个int值告诉lua,它返回几个参数到lua里面去(可以是返回0个参数;如果是0,那么就返回0)。
第三个问题:
lua_tonumber就是把lua堆栈里的相应索引的值作为一个整数返回。你这条语句里就是把lua那边传给来的参数赋给了num变量。

回答(2):

  1. 你的形参指针类型,也就是一个地址,在机器里,地址是用整数表示的。传一个整数进去,是不会报错的。


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


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

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