Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在LUAC-API中创建表中的表_Lua_Lua Table_Lua Api_Jnlua - Fatal编程技术网

在LUAC-API中创建表中的表

在LUAC-API中创建表中的表,lua,lua-table,lua-api,jnlua,Lua,Lua Table,Lua Api,Jnlua,我使用以下代码在Lua C-API中的表(如命名空间)中创建表: JNIEXPORT void JNICALL Java_com_naef_lua_LuaState_lua_1导入表(JNIEnv*env, jobject对象,jstring名称空间){ 卢厄州*L; JNLUA_ENV(ENV); L=getluathread(obj); char*str=getstringchars(名称空间); 字符**res=NULL; char*p=strtok(str,“.”); int n_空间=

我使用以下代码在Lua C-API中的表(如命名空间)中创建表:

JNIEXPORT void JNICALL Java_com_naef_lua_LuaState_lua_1导入表(JNIEnv*env,
jobject对象,jstring名称空间){
卢厄州*L;
JNLUA_ENV(ENV);
L=getluathread(obj);
char*str=getstringchars(名称空间);
字符**res=NULL;
char*p=strtok(str,“.”);
int n_空间=0,i;
while(p){
res=realloc(res,sizeof(char*)*++n_空格);
如果(res==NULL)
出口(-1);
res[n_空间-1]=p;
p=strtok(空,“.”);
}
对于(i=0;i<(n_空格);+i){
如果(i==0){
新表(L);
}else if(i==(n_空格-1)){
lua_pushlstring(L,res[i],(sizeof(res[i])/sizeof(char))-1;
lua_getglobal(L,res[i]);
打破
}否则{
lua_pushlstring(L,res[i],(sizeof(res[i])/sizeof(char))-1;
新表(L);
}
}
对于(i=(n_空格-2);i>=0;i--){
如果(i==0){
lua_setglobal(L,res[i]);
打破
}否则{
lua_可设置(L,-3);
}
}
免费(res);
}
对于此硬代码,这可以等于:

lua_newtable(L);/*=>堆栈:…,{}*/ { lua_pushliteral(L,“b”);/*=>堆栈:…,{},“b”*/ lua_newtable(L);/*=>堆栈:…,{},“b”,{}*/ { lua_pushliteral(L,c);/*==堆栈:…,{},“b”,{},“c”*/ lua_newtable(L);/*==>堆栈:…,{},“b”,{},“c”,{}*/ { 卢厄(L,“d”); lua_getglobal(L,“MyTable”); lua_可设置(L,-3); } lua_可设置(L,-3);/*=>堆栈:…,{},“b”,{}*/ } lua_可设置(L,-3);/*=>堆栈:…,{}*/ } lua_setglobal(L,“a”);/*=>堆栈:*/ 当我发送i函数时,
Java_com_naef_jnlua_LuaState_lua_1import_1tables()
字符串如下所示:“com.naef.jnlua.test.fixture.TestObject”//TestObject相当于“MyTable”,其他类似于表中的“com”表和TestObject表中的“com”表-最后一个表

当我在这段代码之后尝试时,执行lua code
com.naef.jnlua.test.fixture.TestObject

尝试索引字段“naef”(一个nil值)
我哪里错了