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

Sug*_*uge 8 c lua

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


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}}
}

Ale*_*lex 9

需要更改lua_settable为@lhf提及.此外,您总是添加到子表的前2个索引中

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}}
}
Run Code Online (Sandbox Code Playgroud)