首页 > 解决方案 > 在 Lua 中,访问通过用户数据表寻址的 C 函数的评估值

问题描述

我有一段从 C 程序调用的 lua 代码,它传递给它一个表。

该表包含一个表,该表具有 LUA 报告的“函数”类型的字段。

我想调用该函数并获取其返回值,但以下只会导致崩溃(????堆栈损坏????):

function myFunc (tableIn)
    local interface = tableIn["interface"] -- type(interface) is table
    local targetFunc = interface["targetFunc"] -- type(targetFunc) is function
    local value = targetFunc()
    ...
end

因此,我假设我需要将一个或多个参数传递给 targetFunc(...) 但我不知道 targetFunc() 期望什么,并且我无权访问 targetFunc 的文档或代码 - 我' m 也猜测是用 C 编写的。

我已经看到了线程lua - 从函数外部获取函数的参数名称列表并按照建议运行代码 - 但这似乎只是返回“*临时”。

问题:是否有一些从 LUA 调用 C 例程的“标准”方式 - 或者是否有任何其他编程方式(甚至一次性)来找出 targetFunc(...) 需要多少和什么类型的参数。

即使是“不 - 您需要查看 targetFunc(...) 的代码/文档”的回答也会有所帮助!

提前致谢...

标签: luac-api

解决方案


推荐阅读