繁体   English   中英

如何在C ++中获取lua函数作为参数然后调用它

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM