luajit绑定到java,linux和windos64位编译

luajava是java语言通过jni调用C层luajit,64位的java不能加载32位的so或者dll,因此必须编译成64位的才能使用。这里是整合好的资源,下载后可以直接编译:http://download.csdn.net/download/juy19901128/10140352 


windows:

1 进入你vs的安装目录,如:E:\DevelopSoftware\vs2012\VC

2 在VC目录下有一个vcvarsall.bat脚本文件

3 打开CMD,把脚本文件拖入到里面,输入 amd64参数,如:E:\DevelopSoftware\vs2012\VC\vcvarsall.bat amd64

4 现在你已经有了编译64位环境,CD进入上面下载的代码Luajit-2.0.3/src目录

5 把msvcbuild.bat拖入到dos或者手动输入,如:C:\Users\Administrator\Desktop\pak\luajava-master\LuaJIT-2.0.3\src\msvcbuild.bat

6 等一会儿就会出现=== Successfully built LuaJIT for Windows/x64 ===,这个表示64位的编译成功

7 进入代码的根目录, 输入nmake -f nmake -f Makefile.win

如果成功会出现

------------------
Build Complete
------------------

编译成功会出现一个jar和一个dll

否则查看出错位置,一般是java环境没有配置,再就是config.win看下是否luajit的路径错了


linux:

1 进入代码的Luajit-2.0.3/src目录,修改makefile文件,添加XCFLAGS=-fPIC

2 进入Luajit-2.0.3目录,输入make,系统会自动判断并生成对应的64位或者32位

3 成功后,进入代码根目录,输入make

如果成功会出现

------------------
Build Complete
------------------

否则查看出错位置,一般是java环境没有配置,再就是config看下是否luajit的路径错了


注意:在java代码中我已经把luastate的加载lib代码去掉


还有jni中C-》java的调用,其中的类加载层级关系。

最后附加lua到java的日志打印函数:

if (Constants.isDebug()) {
    JavaFunction pf = new JavaFunction(L) {
        @Override
        public int execute() throws LuaException {
            int top = L.getTop();
            for (int i = 2; i <= top; i++) {
                LuaObject obj = getParam(i);
                if (obj != null) {
                    if (i>2) System.out.print( '\t' );
                    System.out.print(obj.toString());
                }
            }
            if (top >= 2) {
                System.out.println();
            }
            return 0;
        }
    };
    pf.register("print");
    L.pushJavaFunction(pf);
}

有需要学习的可以发我邮件或者加我QQ:329137445


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值