![](/img/trans.png)
[英]how to create and call lua function, that is in multiple files, from c++
[英]How to get lua function as parameter in C++ and then call it
我在C ++中实现lua api(5.1),出现问题,无法将lua函数作为从lua调用的c ++函数中的参数传递。 示例(从C ++调用主函数):
LUA:
function Main()
HookEntityFunction("player", 1, PlayerSpawn); -- << is this normal?
end
function PlayerSpawn()
end
C ++:
int HookEntityFunction(lua_State *L)
{
lua_CFunction F = lua_tocfunction(L, 3); -- << how to call it?
}
您在问题中发布的答案不正确,或者至少很愚蠢。
原始代码不起作用的原因是,顾名思义, lua_tocfunction
仅适用于C函数。 它需要一个已经暴露给Lua的C函数,然后重新提取指向它的函数指针。 由于本地Lua函数没有相应的C函数,因此lua_tocfunction
无法使用。
您提出的解决方案依赖于将传入函数存储为全局函数,并根据其名称进行获取。 那把它放在堆栈上。 但是在您的第一个示例中,它已经在堆栈中! 这是处理C函数中Lua对象的正确,惯用方式:通过操作堆栈。
因此,真正解决问题的方法是,获取第一个Lua代码片段,然后执行lua_call(L, 0, 0)
。 不需要全局变量或指针或任何东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.