首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将lua表从C++传递给.Lua脚本

将lua表从C++传递给.Lua脚本
EN

Stack Overflow用户
提问于 2012-05-20 01:25:04
回答 1查看 3.1K关注 0票数 2

我在过去的6个小时里一直在努力解决这个问题!我哪儿也去不了。

我希望能够在c++文件中创建lua表,然后将其传递给lua脚本文件,该文件具有以下lua函数:

代码语言:javascript
复制
function MTable (t) 
local n=#t
    for i=1,n do 
      print(t[i]) 
    end
end

我动态地创建了一个包含两个字符串的一维数组:

代码语言:javascript
复制
 lua_newtable(L);
 lua_pushstring(L,"10.10.1.1");
 lua_pushstring(L,"10.10.1.2");
 lua_rawseti(L,-3,2);
 lua_rawseti(L,-2,1);

所以现在我把桌子放在堆叠的顶端。我已经通过写以下内容来验证它: if( lua_istable(L,lua_gettop(L),它返回1,这意味着它是一个表。

然后我做了这个:

代码语言:javascript
复制
lua_getglobal(L, "MTable");    // push the lua function onto the stack

uint32_t   result = lua_pcall(L, 1, 0, 0);  //argument 1 is for the table
 if (result) {
 printf(stderr, "Failed to run script: %s\n", lua_tostring(L, -1));
         exit(1);
}

因此,我得到了一个错误:未能运行脚本:尝试调用表值

请注意,该文件还有其他几个函数,我正在从c++成功地调用这些函数。

有人能帮我解决这个错误吗?这能是卢阿的虫子吗?我很正确地遵循了这些步骤.我想!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-20 02:55:15

函数必须位于堆栈的第一位,在args之前。

你可以:

  1. 在生成表之前将函数推送到堆栈上,例如:

lua_getglobal(L,"MTable");堆栈上的...generate表int = lua_pcall(L,1,0,0);

  • Do按现在的顺序执行,然后在执行pcall之前交换arg和函数:

堆栈上的...generate表..。lua_getglobal(L,"MTable");lua_insert (L,-2);//交换表和函数按正确顺序排列,使pcall结果= lua_pcall(L,1,0,0);

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10670094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档