这是功能 calc.lua:
function foo(n)
return n*2
end
这是我的LuaJavaCall
L.getGlobal("foo");
L.pushJavaObject(8);
int retCode=L.pcall(1,1,0); // nResults)//L.pcall(1, 1,-2);
String errstr = L.toString(-1); // Attempt to perform arithmetic on local variable 'n'
更新:如下所示我需要使用L.pushNumber(8.0)而不是L.pushJavaObject()
答案 0 :(得分:1)
尝试使用L.pushNumber
代替L.pushJavaObject
,如下所示:
L.getGlobal("foo");
L.pushNumber(8.0);
int retCode = L.pcall(1,1,0);
String errstr = L.toString(-1);
Lua可能认为JavaObject是一种“用户数据”。在这种情况下,它没有预定义的操作; Lua不知道如何处理JavaObject * 2
,因为你没有定义如何处理它。
OTOH,Lua确实知道如何处理一个数字,因为它是一个内置的原始类型。对于你提供的代码片段,推送一个数字是最难以实现的方法,而不是编写额外的代码来告诉Lua如何处理包含在JavaObject中的数字。