您的位置:首页 > 运维架构 > Linux

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

2017-12-01 10:57 302 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  luajit java