当我想从c调用一个表时,LuaPCall能调用uuu调用元函数吗
我正在尝试使用c API和Lua5.1调用一个表 我将通过以下步骤进行操作:当我想从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
\u call
元函数的表“mt”pcall
“newT”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)