如何从 C 语言获取 API 信息到 Lua 中?

如何获取所有带有 Lua 的 C API 函数列表?

例如,在游戏(Crysis)中有很多可以从 Lua 中调用的 C 函数:

g_gameRules.game:FunctionInC()

我知道很多函数,但如何获取所有可用函数?

原文链接 https://stackoverflow.com/questions/3793311

点赞
stackoverflow用户107090
stackoverflow用户107090

如果g_gameRules.game是一个表,那么遍历它以查找函数。如果它是一个用户数据,则查找它的元表。(同样也适用于表。)

2010-09-26 11:16:32
stackoverflow用户173806
stackoverflow用户173806

可能有或者没有一种简单的方法可以枚举所有的 C 函数。

g_gameRules.game 可能实际上包含这些函数,但这是不寻常的。类似下面的代码将列出这些函数。

for k,v in pairs(g_gameRules.game) do if print(k,v) end

更有可能的是 g_gameRules.game 将具有一个元表,并且该元表具有一个 __index 条目,该条目是一个表或函数。如果 __index 条目是表,则以下内容将列出所有函数。

for k,v in pairs(getmetatable(g_gameRules.game).__index) do print(k,v) end

这只会确定函数的名称,参数列表仍将是未知的。

然而,如果元表的 __index 值为函数,则没有简单的方法可以列出函数。

2010-09-27 04:53:38
stackoverflow用户1052897
stackoverflow用户1052897
对于getmetatable(g_gameRules).__index中的每个i,v,
执行以下操作:
    输出(i.." : "..v)给System.LogAlways;
结束

OR

对于g_gameRules中的每个i,v,
执行以下操作:
    输出(i.." : "..v)给System.LogAlways;
结束
2011-11-17 23:45:57