我正在使用Lua Protected调用,但我收到了一个无保护的错误:
lua_getfield( m_L, LUA_GLOBALSINDEX, "startIteration" ); // 1
if( lua_isfunction( m_L, -1 ) ){
lua_pushnumber( m_L, n ); // 2
auto ret = lua_pcall( m_L, 1, 0, 0 ); // 0
checkLuaReturn( m_L, ret );
}else{
lua_pop( m_L, 1 ); // 0
}
错误是:
PANIC: unprotected error in call to Lua API (../example/ex01.lua:31: attempt to index global 'raster' (a nil value))
Lua代码是:
function startIteration( num )
io.write( "Start iteration " .. num .. "\n" )
raster.grass.save( "output.png" )
end
如何解决它,获得真正受保护的电话?
更新:修复额外的弹出
答案 0 :(得分:0)
这似乎与你的lua_pcall()无关,而是与你的lua代码无关。
行raster.grass.save( "output.png" )
是错误所在的位置。
尝试将其改为:
if raster and type(raster) == 'table' then
if raster.grass and type(raster.grass) then
raster.grass.save()
end
end
但是,这不会解决您的问题,问题是您在raster
创建之前调用变量raster
的成员。