如何将数组作为表从C函数返回到lua?

如何将数组作为表从C函数返回到lua?,c,lua,C,Lua,我需要一个C函数来调用lua脚本。我将从该函数返回一个数组作为表。我使用了代码blow,但崩溃了。有人能告诉我如何使用它吗 struct Point { int x, y; } typedef Point Point; static int returnImageProxy(lua_State *L) { Point points[3] = {{11, 12}, {21, 22}, {31, 32}}; lua_newtable(L); for (int

我需要一个C函数来调用lua脚本。我将从该函数返回一个数组作为表。我使用了代码blow,但崩溃了。有人能告诉我如何使用它吗


struct Point {
    int x, y;
}
typedef Point Point;


static int returnImageProxy(lua_State *L)
{
    Point points[3] = {{11, 12}, {21, 22}, {31, 32}};

    lua_newtable(L);

    for (int i = 0; i  3; i++) {
        lua_newtable(L);
        lua_pushnumber(L, points[i].x);
        lua_rawseti(L, -2, 2*i+1);
        lua_pushnumber(L, points[i].y);
        lua_rawseti(L, -2, 2*i+2);
        lua_settable(L,-3);
    }

    return 1;   // I want to return a Lua table like :{{11, 12}, {21, 22}, {31, 32}}
}

尝试用
lua\u-rawseti(L,-2,i+1)
替换
lua\u-setable(L,-3)
,需要更改@lhf提到的
lua\u-setable
。此外,您总是在子表的前两个索引中添加索引

typedef struct Point {
    int x, y;
} Point;


static int returnImageProxy(lua_State *L)
{
    Point points[3] = {{11, 12}, {21, 22}, {31, 32}};

    lua_newtable(L);

    for (int i = 0; i < 3; i++) {
        lua_newtable(L);
        lua_pushnumber(L, points[i].x);
        lua_rawseti(L, -2, 1);
        lua_pushnumber(L, points[i].y);
        lua_rawseti(L, -2, 2);

        lua_rawseti(L, -2, i+1);
    }

    return 1;   // I want to return a Lua table like :{{11, 12}, {21, 22}, {31, 32}}
}
typedef结构点{
int x,y;
}点;
静态int returnImageProxy(lua_State*L)
{
点[3]={11,12},{21,22},{31,32};
新表(L);
对于(int i=0;i<3;i++){
新表(L);
lua_-pushnumber(L,点[i].x);
卢厄·罗塞蒂(L,-2,1);
lua_-pushnumber(L,点[i].y);
卢厄·罗塞蒂(L,-2,2);
卢厄·罗塞蒂(L,-2,i+1);
}
return 1;//我想返回一个Lua表,如:{11,12},{21,22},{31,32}
}

你能解释一下这两者的区别吗?