假设我有当指定玩家死亡时执行的回调函数。

function OnPlayerDeath(playerid)

end

我希望在Lua C模块中调用此函数,而不将其放在lua脚本中:

static int l_OnPlayerConnect (lua_State * L) {
  enum { lc_nformalargs = 1 };
  lua_settop(L,1);

  // so here I can use playerid argument - 1 arg

  return 0;
}

是否有可能在C语言中接收此回调参数?

#define LUA extern "C" __declspec(dllexport) int __cdecl

LUA luaopen_mymodule(lua_State *L)
{
  /* function OnPlayerConnect( playerid )
   *    
   * end */
  lua_pushcfunction(L,l_OnPlayerConnect);
  lua_setfield(L,LUA_GLOBALSINDEX,"OnPlayerConnect"); //there's already OnPlayerConnect I just want to also call it here but I don't know how.
  assert(lua_gettop(L) - lc_nextra == 0);

  return 1;
}

我不想将此功能推送到lua堆栈上,因为该功能已经存在。 我只希望它已经存在Lua功能。

===============>>#1 票数:1

如果要从C API在Lua中运行它,则需要以一种或另一种方式将其压入堆栈。 如果它已经存在于全局表中的某个位置,则可以通过调用lua_getglobal来推送它。 lua_call(lua_pcall)要求在调用之前调用该函数并将其参数存在于堆栈顶部。

如果您愿意,可以检查LuaJIT ffi回调功能,但这不是普通的Lua。

===============>>#2 票数:0 已采纳

解决了。 可能是WB

解决方案:从C调用loadstring。

  ask by deepspace translate from so

未解决问题?本站智能推荐:

2回复

将Lua函数块转换为C字符串

我正在研究一个使用Lua字符串并将其转换为C字符串的项目-当然,这一点都不困难。 但是,在尝试将函数的二进制表示形式(即由对string.dump的调用产生的一种string.dump )转换为C字符串时遇到麻烦。 我在读取整个字符串时遇到麻烦。 尽管这不是该项目的最终目标,但请考虑以
1回复

将Lua表转换为C ++

我有一个这样的Lua表: 我将此代码翻译为C ++。 帮我找到类似的容器(字典)。 它必须支持非常高的速度,因为我将使用蛮力学习此数据。 Lua脚本的工作时间为1周。 我学习C ++可以更快地完成这项工作。 Lua暴力破解圈看起来像:
1回复

将Lua函数传递给C ++

我正在用C ++制作GUI。 我希望Lua脚本在C ++中注册Lua函数,以便当C ++处理按钮单击时,C ++会调用已注册的Lua函数。 我已将以下SO帖子用作指南: http : //stackoverflow.com/questions/4928973/how-do-you-p
1回复

从C ++调用Lua函数

我正在使用最新版本的LuaJit,并且需要一些入门帮助。 我需要的是让一堆函数暴露在Lua环境中,这些函数可以在脚本中覆盖以运行用户提供的代码,然后在C ++中的set事件期间调用这些函数。 例如,当用户按下TAB键时,它将从lua环境中调用一个函数,例如OnScoreboardOpen
2回复

来自C ++的lua函数

让我们在“ luafunc.lua”中有一个代码: 让我们尝试使用C ++文件中的foo函数: 因此,问题在于此C ++代码执行了整个luafunc.lua。 自然,我可以从lua文件中删除读取部分,然后从C ++中仅执行foo。 但是,即使lua文件中还有其他内容,我也可以
4回复

在Lua中注册C ++函数?

我试图在Lua中注册一个c ++函数。 但是得到这个错误: 编辑: 而在主要方面:
1回复

从C ++调用Lua函数

我有谷歌的高低,并找到了例子,但似乎没有一个工作(Lua 5.2)。 我在Lua中有一个简单的功能 我想从C ++调用onData并尝试这个: 正如您所看到的,我正在将脚本作为一个协同例程启动,因此我可以在其上使用lua_yield()函数。 我试图在L和CO状态下寻找功
3回复

我应该如何将lua函数绑定到C ++函数?

我有一个叫做Entity的类,它具有许多函数,如onPickup,onDrop,onUse等。我要做的是编写一个定义所有这些函数的脚本,并使它们可从C ++函数调用。 因此,用C ++定义的函数将只调用它们具有某些功能的相应Lua函数。 但这是问题所在,我希望我编写的每个脚本都可以使程序
1回复

如何在Lua C API中分配全局Lua函数变量?

我正在尝试重命名Lua中的某些函数,以便可以更轻松地调用它们。 例如, of.getHours()函数应该能够由ofGetHours()调用。 因此,在初始化Lua状态之后,我加载了一个Lua字符串,该字符串分配这些全局函数变量,如下所示: luaL_dostring(L, "o
1回复

使用LuaBridge或Lua将C ++对象传递给Lua函数

我有一个用C ++构造的大对象(已经接触过Lua),并且希望在Lua中进行处理。 我可以使用lua_pushinteger和lua_pushstring将任何简单类型传递给Lua函数( int , string ),但不能使用C ++类。 我已经尝试通过将指针推到我的对象来尝试lua_p