首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LuaJava -对Lua调用中的无保护错误

LuaJava -对Lua调用中的无保护错误
EN

Stack Overflow用户
提问于 2014-11-03 16:44:41
回答 1查看 759关注 0票数 0

我试图让一个简单的函数在LuaJava中工作(添加两个数字)。我对Lua的经验很少,我发现这很困难,因为我还没有找到关于LuaJava的深入文档。我目前可以从lua打印到java控制台,但除此之外什么也不能打印出来。

我尝试过实现几种方法,但每次都会得到相同的错误:

代码语言:javascript
复制
PANIC: unprotected error in call to Lua API (attempt to call a nil value)

这是我正在使用的代码:

代码语言:javascript
复制
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); 
    }
}

卢阿的档案:

代码语言:javascript
复制
function add(a, b) 
    return a + b
end

我的IDE是Eclipse。提前感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26718832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档