如何在C语言中获取Lua参数?

我正在使用 Visual C++ 2012 并尝试为 Lua 编写 C 扩展程序。目前,我正在设计一个函数原型:

lib.myfunc(number, {a=1,b=2,c=3},{d=4,e=5,...})

'myfunc' 函数有 3 个参数,第一个参数是整数,第二个和第三个参数是表类型,我需要通过键来访问值(键为 'a','b','c' ...)

我已经阅读了 Lua 手册并搜索了许多教程,但仍然无法让其正常工作。我想要一个完成这个任务的示例 C 代码,谢谢~

点赞
用户2198692
用户2198692

我并不是很了解 luabind,所以我不确定它们是否提供了自己的设施来完成这个功能,但在 Lua 中,你可以像这样做:

int myLuaFunc(lua_State *L)
{
  int arg1 = luaL_toint(L, 1);
  luaL_checktype(L, 2, LUA_TTABLE);    // 如果不是一个table, 则抛出错误
  luaL_checktype(L, 3, LUA_TTABLE);

  // 获取第一个表的值并将其压入栈中
  lua_getfield(L, 2, "keyname");   // 或者使用 lua_gettable
  // 假设它是一个字符串,则获取它
  const char *tmpstr = lua_tostring(L, -1);

  //..... 对于其他键,同样的方式
}

你可能需要参考 Lua 参考手册 来了解我使用的函数的描述。

2013-04-21 10:34:47