6
Ich versuche, eine Lua-Tabelle zu meinem C-Programm zu übergeben, aber ich weiß nicht, wie es geht.Lua-Tabelle von C lesen
Mein Lua Code:
local stages = {}
stages[1] = stage1
stages[2] = stage2
stages[3] = stage3
lstage.buildpollingtable(stages)
Meine C-Code:
static int lstage_build_polling_table (lua_State * L) {
luaL_checktype(L, 1, LUA_TTABLE);
lua_getfield(L, 1, "stage1");
lua_getfield(L, 1, "stage2");
lua_getfield(L, 1, "stage3");
stage_t s1 = lstage_tostage(L, -3);
stage_t s2 = lstage_tostage(L, -2);
stage_t s3 = lstage_tostage(L, -1);
printf("%d\n",s1->priority);
printf("%d\n",s2->priority);
printf("%d\n",s3->priority);
return 1;
}
Was muss ich tun, alles über die Elemente zu laufen? Dieser Code generiert einen Fehler wie folgt:
bad argument #-3 to 'buildpollingtable' (lstage-Stage * expected, got table)
Kann jemand erklären, was mache ich falsch?
Allerdings sollte die Fehlermeldung sein '..., bekam nil'. Vielleicht verwirrend ist die Verwendung von negativen Zahlen "lstage_tostage". – lhf
Es gibt diesen Fehler zurück: "Warnung: Passing Argument 3 von 'lua_getfield' macht Zeiger aus Integer ohne Besetzung [standardmäßig aktiviert]" =/... danke für Sie Hilfe @lhf – Crasher
@Crasher, haben Sie den Code mit verwendet 'lua_rawgeti'? – lhf