0

我实际上是在尝试创建一个类C++来封装对的调用Lua,实际上是在尝试封装一个函数以Lua在构造函数上加载脚本,但主要问题是当我尝试对我找不到的 Lua 脚本进行函数调用时如何存储多个返回值以及如何正确推送所有参数。

我试图找到一个函数的实现的想法,该函数使用任意数量的任何类型的参数调用 lua 函数,(该函数将推送参数并调用该函数,但我不希望动态转换例如知道是否例如,我必须“lua_pushnumber”或推送字符串。

4

1 回答 1

0

您可以尝试在构造函数中接受某种类型的变体类的数组,并使用它们的类型来确定如何将它们泵入 Lua。另一方面,实际上只有两种类型可以在 C/C++ 和 Lua 之间互换:字符串和数字/双精度。一个可能的解决方案是传递一个字符串数组(或者一个 char** 和一个 int,如果你愿意的话),也将你的双打作为字符串传递。

然后,您可以通过在字符串“return”之后附加字符串的字符串表示或双精度来执行 loadstring() 调用。当你执行 loadstring() 推送到堆栈的函数时,lua 引擎会将你的变量(字符串或具有适当类型的双精度)推送到 lua 堆栈。你会有字符串解析双打的开销,但如果你渴望速度,我敢打赌你会纯粹用 C++ 编码:) 这种方法的优点是你实际上也可以通过这种方式传递一个函数:(即“返回函数()打印(“你好”);结束“)

于 2012-05-03T00:43:43.550 回答