尝试对本地变量进行算术运算的 Lua 错误。

下面是 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()

原文链接 https://stackoverflow.com/questions/8622409

点赞
stackoverflow用户234175
stackoverflow用户234175

尝试使用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视为“userdata”类型,在这种情况下,它没有预定义的操作; 如果您没有定义如何处理它,Lua将不知道如何处理“JavaObject * 2”。

另一方面,Lua知道如何处理数字,因为那是内置的原始类型。对于您提供的代码片段,推送数字将是最不痛苦的方式,而不是编写额外的代码来告诉Lua如何处理包裹在JavaObject中的数字。

2011-12-24 04:51:47