首先可以先去了解一下lua与c++交互的栈的机制以及相关api
比如有这么一个二维数组:int a[1][3] = {{1,2,3}};
一个lua栈:lua_State* L;
【1】c++ To lua:
lua_newtable(L); //创建一个lua的table压入栈中
for(byte i = 0;i<1;i++)
{
lua_pushinteger(i+1);
lua_newtable(L);
for(byte j = 0;j<3;j++)
{
lua_pushinteger(j); //key
lua_pushnumber(a[i][j]); //value
lua_rawset(-3);
}
}
lua读取到的数据形式为
1:
1:1
2:2
3:3
【2】lua To c++:
//lo为传入的我们要读取的二维数组所在栈内索引
int a[1][3];
for(size_t i = 0;i < 1;i++)
{
lua_pushinteger(i+1); //压入key值
lua_gettable(L,lo); //获取key==i+1的栈内数据,并移到栈顶
if(lua_istable(L,-1)){
for(size_t j = 0;j < 3;j++)
{
lua_pushinteger(j+1);//压入key值
lua_gettable(L,lo+1);
a[i][j] = (int)tolua_tonumber(L,-1,0);
lua_pop(L,1);
}
}
lua_pop(L,1);
}
如果有一些错误的地方恳请指正!