本人菜鸟,学的C++;但最近却被要求学LUA编程,这也就罢了,现在又要搞lua与JAVA OC等的交互。OC暂时没去弄,肯定也是一个大老虎。。。先请教一下JAVA方面的问题。。。
首先我在网上找到一个例子,是通过JNI实现JAVA-LUA交互的。通过COCOS的转换工具得到了lua_XXX_Auto.cpp之类的文件,然后在PC端编译,OK,在main.lua中调用这个例子的接口,是没问题的;不过因为是PC端。对应的接口实现其实是空的,但起码说明了代码调用的正确性。 然而编译Android工程,通过。运行却报错。提示说该类是一个NIL VALUE。。。求帮助!(在CPP中是注册了的,而且就算把接口实现中的JNI代码移除也是同样的错)
简单的说。其实就是自实现类在lua中的调用ANDROID端不识别
class A
{
static bool init();
}
main.lua 中:
A:init() --error A is a nil value -----------
没有办法,开始上网寻找各种解决方法,发现据说Cocos中有个牛叉的东东叫LUAJ,这些转换其实是都已经实现了的,还有对应的例子在LUA_TEST中。仔细一看发现还真有,欣喜若狂,例子实现了一个ADD函数。于是我就在例子的JAVA文件中添加一个接口,因为俺是JAVA盲,接口很简单,就是一个静态方法中调用了一个非静态方法,有咨询过搞ANDROID的同事,JAVA接口应该是没问题的。 但是在安卓手机上跑的时候也是报错,err=-4 说是JAVA内部调用出错了。。。
public class A {
private Activity a;
public void Object Get()
{
a =new A();
a.test();
}
public void test()
{}
--代码临时编写的,且是凭的记忆,因为俺实在是个JAVA盲,所以语法有错请忽略,毕竟实际情况是代码可以编译通过不会是这方面导致的问题。。。
急疯了都。求大神们不吝解救啊! JNI的方式问题在哪?luaj的方法问题又在哪?