【发布时间】:2009-10-20 23:41:03
【问题描述】:
我有一个使用 lua 文件的应用程序,它的一些更晦涩的配置选项。因此,它主要包含对应用程序的调用以创建事物和更改属性;大多数 C 函数没有返回值,但有些有。
我现在需要将这些相同的配置文件读入不同的应用程序,并在调用函数时执行明显不同的事情(所以我不能使用通用代码)。此外,我只对可能的函数的子集感兴趣,我认为我可以默认忽略(和/或返回 nil)任何其他函数调用。
所以我想知道这里最好的方法是什么。如何(从 C++ 应用程序)加载和执行 lua 脚本,以便表达式等被正常评估,但我可以拦截和处理某些应用程序定义的 C 函数,同时简单地忽略(如果需要,返回 nil)对任何其他 C 的调用函数?
(注意:我确实可以访问原始应用程序的词汇表,它主要使用 luabind;我可以使用相同的定义并更改实现,但这太脆弱了,因为原始应用程序可以添加更多功能稍后。我想要更通用的东西。)
我们的目标是获得一些可以用作通用占位符的 C 代码;最终结果是“任何已定义的程序(标准库例程、Lua 中定义的函数和显式注册的 C 函数),都照常调用它;对于其他任何事情,调用一个什么都不做的特定例程,而不是引发错误”。最好是与 luabind 兼容的东西。
整个过程由一段 C 代码启动,设置 Lua 环境,加载一组文件,调用一个函数,然后销毁环境。不会有任何进展。
【问题讨论】:
标签: lua