Lua脚本转换为C++代码

4
我正在为Lua编写C函数,其中有很多像lua_gettable、lua_touserdata等的调用。
我的C函数可能会接收到像带有表格作为字段的表格之类的复杂结构。
对我来说,在堆栈机上编程很困难。
是否有一种编写Lua脚本的方法,可以将其转换为C代码?
或者其他一些工具可以帮助我编写这样的C函数以供Lua脚本使用。
谢谢。
附言:
以下是示例:
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

我的实际代码更加复杂,我正在寻找一些自动化代码生成工具来帮助我。


1
等等,啥?你的问题是什么?如果你能用Lua写,就用Lua写——为什么要用C写呢? - user395760
我正在创建可以被 LUA 调用的 C 函数。对我来说,编写这样的函数很困难。实际上,我已经为 lua 脚本编写了许多 C 函数。我无法在 lua 中编写它们。我使用 lua 来调试我的应用程序。 - Max
4个回答

8

5
也许可以使用toLua来解决。

谢谢。但这不是我要找的。当我希望以更简单的方式读取复杂的lua strcust时,tolua会在C类周围生成包装器。 - Max

2

在C#中,我做过的一件事是编写代码将LUA数据结构转换为JSON格式。然后,我可以通过任何带有各种附加功能的JSON库加载数据。这种方法有点绕,但你只需要编写一次JSON编码代码。


哎呀,这根本不是他问的问题。他想知道如何将Lua代码转换为C,而不是将Lua表格转换为JSON对象。 - Glenn McAllister
1
他说:“我的C函数可能会接收像表格中带有表格字段这样的复杂结构。” 这很困难。虽然简化使用方法的建议并不直接回答他的问题,但仍然可能有用。 - Frank Schwieterman
JSON太过于不可靠。我可以编写C代码,但我相信LUA解释器将LUA脚本转换为C调用更加高效。因此,有可能以某种方式完成这项工作。LUA不仅仅是堆栈机器。一定有一些工具可以帮助编写这样的系统。 - Max

-1

SWIG 简化封装器和接口生成器 http://www.swig.org/ 它通常用于将 C 语言转换为 Lua,但通过定义一些全局变量,您也可以将其用作 Lua 到 C 的转换工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接