我有一个c函数,其中我使用lua_register
从lua表中获取数据到c代码,但我有疑问。
我怎样才能读取一个lua表指针,来创建一个c代码来读取那个表
我有以下代码。
table.lua
MyTable = {
["coreal_1-1"] = {
enable = true,
special = {
start = true,
time = 60,
},
speed = 1.5,
size = 2.5,
},
["capt_2-3"] = {
enable = true,
special = {
start = true,
time = 30,
},
speed = 1.8,
size = 2.1,
index = 1.1,
}
}
function main()
for k, v in pairs(MyTable) do
result, msg = table_read(k, v.enable, v.special, v.speed, v.size, v.index)
if (not result) then
return false, msg
end
end
return true, "success"
end
C代码:
int table_read(lua_State *L) {
int id = 0, time = 0;
bool enable = false, start = false;
id = GetID(luaL_checkstring(L, 1));
enable = lua_toboolean(L, 2);
if (lua_getfield(L, 2, luaL_checkstring(L, 2))) {
start = lua_toboolean(L, 3);
time = lua_tointeger(L, 3);
}
lua_pop(L, 1);
...
return 1;
}
void main(void) {
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);
lua_register(L, "table_read", table_read);
if (luaL_dofile(L, "table.lua"))
return;
lua_getglobal(L, "main");
if (LUA_OK != lua_pcall(L, 0, 0, 0))
return;
}
问题发生在v.special
中,传递了表指针
现在的问题是,我如何使用它生成的地址创建这个表的阅读?
1条答案
按热度按时间8ljdwjyq1#
索引3中的
v.special
。您应该使用lua_getfield
来获取此表,如下所示:看这里的文档。