【问题标题】:Lua script to C++ codeLua 脚本到 C++ 代码
【发布时间】:2011-06-11 06:40:18
【问题描述】:

我正在为 Lua 编写 C 函数。 我有很多调用,比如 lua_gettable、lua_touserdata 等

我的 C 函数可能会接收复杂的结构,例如以表格为字段的表格。

堆叠机器对我来说很难编程。

有没有办法编写可以转换为 C 代码的 Lua 脚本。

或其他一些工具可以帮助我为 lua 脚本编写此类 C 函数。

谢谢。

PS

这里是例子:-

local data = {}
data.x = {}
data.x.y = 1
myCfunc(data)

int myCfunc(lua_State * L){
 lua_pushstring(L, "x");
 lua_gettable(L, 2);
 lua_pushstring(L, "y");
 lua_gettable(L, -2);
 double y = lua_tonumber(L, -1);
 lua_pop(L, 2);
}

而不是

function myCfunc(data)
 y = data.x.y
end

我的真实代码要复杂得多,我正在寻找一些 对我有帮助的自动代码生成。

【问题讨论】:

  • 等等,什么?你有什么问题?如果你可以用 Lua 写,那就用 Lua 写——为什么需要用 C 写?
  • 我正在创建 LUA 调用的 C 函数。我很难做出这样的功能。实际上,我为 lua 脚本制作了许多 C 函数。我无法在 lua 中对它们进行编码。我使用 lua 调试我的应用程序。

标签: c lua stack


【解决方案1】:

在 C# 中,我所做的是编写代码以将 LUA 数据结构转换为 JSON 格式。然后我可以通过任何 JSON 库加载数据,包括它们所有的花里胡哨。它是一种迂回的解决方案,但您只需编写一次 JSON 编码代码。

【讨论】:

  • 呃……这根本不是他问的问题。他想知道如何将 Lua 代码转换为 C,而不是 Lua 表转换为 JSON 对象。
  • 他说“我的 C 函数可能会接收复杂的结构,例如以表作为字段的表。”这很难。尽管简化该用法的建议不是他问题的直接答案,但它可能仍然有用。
  • JSON 太老套了。我可以编写 C 代码,但我相信 LUA 解释器更有效地将 LUA 脚本转换为 C 调用。因此,有可能以某种方式完成这项工作。 LUA 不仅是堆栈机。必须有一些工具可以帮助编写这样的系统。
【解决方案2】:

也许toLua 可以提供帮助。

【讨论】:

  • 谢谢。但这不是我要找的。当我希望以更简单的方式读取复杂的 lua strcust 时,tolua 将生成围绕 C 类的包装器。
【解决方案3】:

试试LuaToCee

【讨论】:

  • 谢谢!这就是我问的!
【解决方案4】:

SWIG 简化包装器和接口生成器 http://www.swig.org/ 它通常用于 C 到 Lua,但通过定义一些全局变量,您可以将其用作 Lua 到 C

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2011-07-01
    • 2013-07-24
    • 1970-01-01
    • 2012-05-27
    • 2012-04-30
    • 1970-01-01
    • 2010-09-11
    • 2011-01-12
    相关资源
    最近更新 更多