如何在c中获取lua参数?

时间:2013-04-21 09:32:49

标签: c visual-c++ lua luabind

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

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

'myfunc'函数有3个参数,第一个参数是整数个数,第二个和第三个参数是表类型,我需要按键访问值(键是'a','b ”, 'C' ...)

我已经阅读了lua手册并用Google搜索了许多教程,但我仍然无法使用它。我想要一个示例C代码完成这项工作,谢谢〜

1 个答案:

答案 0 :(得分:1)

我真的不知道luabind,所以我不确定,如果他们提供任何自己的设施来做到这一点,但在Lua你会这样做:

int myLuaFunc(lua_State *L)
{
  int arg1 = luaL_toint(L, 1);
  luaL_checktype(L, 2, LUA_TTABLE);    //Throws an error, if it's not a table
  luaL_checktype(L, 3, LUA_TTABLE);

  //Get values for the first table and push it on the stack
  lua_getfield(L, 2, "keyname");   //Or use lua_gettable
  //Assuming it's a string, get it
  const char *tmpstr = lua_tostring(L, -1);

  //..... Similariliy for all the other keys
}

您可能需要参考Lua Reference Manual来了解我使用的功能。