![](/img/trans.png)
[英]How to call a C Function from Lua with table type argument and table type return value?
[英]How to return an array as table from C function to 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}}
}
需要將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}}
}
嘗試用lua_settable(L,-3)
lua_rawseti(L,-2,i+1)
替換lua_settable(L,-3)
lua_rawseti(L,-2,i+1)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.