当我想从c调用一个表时,LuaPCall能调用uuu调用元函数吗

当我想从c调用一个表时,LuaPCall能调用uuu调用元函数吗,lua,metatable,Lua,Metatable,我正在尝试使用c API和Lua5.1调用一个表 我将通过以下步骤进行操作: 创建一个具有\u call元函数的表“mt” 创建一个表“newT”,并将“mt”设置为“newT”元表 pcall“newT” 我的问题是在步骤3,我得到错误:“尝试调用表值” 谁能告诉我如何用c语言调用表格吗?Lua C等效物(未测试,但应有效) int mtcall(lua_State*L){ printf(“调用表\n”); 返回0; } int mainchunk(lua_State*L){ lua_newt

我正在尝试使用c API和Lua5.1调用一个表

我将通过以下步骤进行操作:

  • 创建一个具有
    \u call
    元函数的表“mt”
  • 创建一个表“newT”,并将“mt”设置为“newT”元表
  • pcall
    “newT”
  • 我的问题是在步骤3,我得到错误:“尝试调用表值”

    谁能告诉我如何用c语言调用表格吗?

    Lua C等效物(未测试,但应有效)
    int mtcall(lua_State*L){
    printf(“调用表\n”);
    返回0;
    }
    int mainchunk(lua_State*L){
    lua_newtable(L);//堆栈:t
    lua_newtable(L);//堆栈:t,mt
    lua_pushcfunction(L,&mtcall);//堆栈:t,mt,&mtcall
    lua_setfield(L,-2,“_调用”);//mt._调用=&mtcall | |堆栈:t,mt
    lua_setmetatable(L,-2);//setmetatable(t,mt)| stack:t
    if(lua_pcall(L,1,0)!=0)//如果出现错误,堆栈上将出现错误字符串。将其弹出。
    卢厄波普(L,1);
    返回0;
    }
    
    Push newT,Push all arguments,然后lua_pcall。谢谢你的回复。但我已经尝试了pcall,但正如我在问题中所说的,出现了错误。请发布你的代码。英语和格式
    t = {}
    setmetatable(t, { __call = function() print("calling the table") end })
    pcall(t)