我遇到了绑定 C++ 和 Lua 的问题。我在 Lua 中实现了一个简单的类系统,它使我能够使用另一个 lua 文件创建一个 lua 类的“实例”
require 'classname'
m_newObj = classname() --"classname() creates a new instance
然后我可以使用 m_newObj 访问函数
m_newObj:functionname(parameter)
这工作得很好,但我希望能够从 C++ 代码访问 lua 类的实例。
通常,您可以使用 C++ 创建对 lua 函数的访问
lua_State* pL = luaL_newState();
...
lua_getglobal(pL, "functionName");
lua_call(pL,0,0);
但这仅调用 luafile 中的函数,它不会在“类”的特定实例上调用该特定函数。
所以基本上我想做的是
- 在 C++ 中访问 lua 类的实例
- 在特定实例上调用函数
我想这样做的原因是因为我发现在性能方面,在 lua 中使用 C++ 函数比在 C++ 中使用 lua 函数需要更多,所以能够使用 lua 来扩展实体而无需 lua 代码调用很多 C++ 函数我需要访问 C++ 中的 lua 类,而不是访问 lua 中的 C++ 类。