我试图让一个简单的函数在LuaJava中工作(添加两个数字)。我对Lua的经验很少,我发现这很困难,因为我还没有找到关于LuaJava的深入文档。我目前可以从lua打印到java控制台,但除此之外什么也不能打印出来。
我尝试过实现几种方法,但每次都会得到相同的错误:
PANIC: unprotected error in call to Lua API (attempt to call a nil value)这是我正在使用的代码:
import org.keplerproject.luajava.LuaState;
import org.keplerproject.luajava.LuaStateFactory;
public class Hello {
public static void main(String[] args) {
LuaState l = LuaStateFactory.newLuaState();
l.openLibs();
l.LdoFile("main.lua");
l.call(0, 0);
l.getGlobal("add");
l.pushInteger(1);
l.pushInteger(1);
l.call(2, 1);
int result = l.toInteger(1);
l.pop(1);
System.out.println("1 + 1 = " + result);
}
}卢阿的档案:
function add(a, b)
return a + b
end我的IDE是Eclipse。提前感谢您的帮助。
发布于 2014-11-03 17:10:19
我将假设这个问题发生在这行l.call(0, 0);上。
l.LdoFile("main.lua");很可能不会返回必须调用的堆栈上的函数。这就是lua C函数luaL_loadfile所做的。luaL_dofile是一个围绕luaL_loadfile的宏,它还运行返回的块函数。
因此,在l.LdoFile("main.lua");完成后,我相信堆栈中没有任何内容,并且可以使用您的add函数。
https://stackoverflow.com/questions/26718832
复制相似问题