依赖包(附件有下载):
包名 | 类型 | 操作系统 |
luajava-1.1.jar | jar | ALL |
libluajava-1.1.so | .so | linux |
luajava-1.1.dll | .dll | windows |
windows:
将luajava-1.1.dll拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道)
linux:
将libluajava-1.1.so拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道)
如果linux有问题,则按以下操作重新编译.so文件
1.编译&安装Lua
tar -zxvf lua-5.1.5.tar.gz
cd lua-5.1.5
make linux install
注:64位系统需要先编辑src/Makefile,在CFLAGS上添加-fPIC。
2.编译与安装Luajava
tar -zxvf luajava-1.1.tar.gz
cd luajava-1.1
修改 config文件,添加JAVA_HOME=/broadtech/javaweb/jdk1.6.0_25
make
3.部署。
将编译好的libluajava-1.1.so拷贝到java.libary.path目录(通过System.getProperty("java.library.path")可以知道),
luajava-1.1.jar拷贝到$JAVA_HOME\jre\lib\ext目录
4、重启项目
注:LuaJava1.1缺少了JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger (JNIEnv * env , jobject jobj , jobject cptr , jint number) 方法的实现,编译前可编辑src/c/luajava.c加入以下代码实现再make
/************************************************************************
* JNI Called function
* Lua Exported Function
************************************************************************/
JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger
(JNIEnv * env , jobject jobj , jobject cptr , jint number)
{
lua_State * L = getStateFromCPtr( env , cptr );
lua_pushinteger( L, ( lua_Integer ) number );
}
LuaUtil.java
/**
* 调用Lua脚本
* @author chamcon
* @date 2013-11-07 15:58:48
*/
public class LuaUtil {
public static List<String> PUBLIC_LUA_FILES = new ArrayList<String>();
public static Logger logger = Logger.getLogger(LuaUtil.class);
static {
//配置公共函数lua文件
//PUBLIC_LUA_FILES.add("");
}
/**
* 执行Lua脚本
*/
public static String execLuaFunc(String lua,String funcName,String value){
//依赖库文件要放到java.library.path下
logger.debug("java.library.path:"+System.getProperty("java.library.path"));
LuaState L = LuaStateFactory.newLuaState();
// 加载lua标准库,否则一些lua基本函数无法使用
L.openLibs();
//加载公共函数文件
if(!PUBLIC_LUA_FILES.isEmpty()){
for(int i=0;i<PUBLIC_LUA_FILES.size();i++){
L.LdoFile(PUBLIC_LUA_FILES.get(i));
}
}
//加载函数串
L.LdoString(lua);
//调用函数名
L.getField(LuaState.LUA_GLOBALSINDEX, funcName);
//设置参数
L.pushString(value);
//调用
L.call(1, 1);
//设置返回对象
L.setField(LuaState.LUA_GLOBALSINDEX, "RESULT");
LuaObject lobj = L.getLuaObject("RESULT");
//获取返回值
String res = lobj.getString();
L.close();
if(res == null) return "";
return res;
}
}
本文链接:
http://chamcon.iteye.com/blog/1972995
参考:http://www.chinasb.org/archives/2013/06/5115.shtml
分享到:
相关推荐
总结来说,C++在Linux中调用Lua动态链接库涉及到Lua库的编译、链接以及在C++代码中的使用。理解这些步骤对于开发涉及C++和Lua混合编程的应用至关重要。正确配置和使用动态链接库,可以让C++充分利用Lua的脚本能力,...
本文将深入探讨如何在C/C++程序中调用Lua脚本,以实现强大的功能扩展和灵活的逻辑处理。Lua是一种轻量级的脚本语言,因其简洁、高效的语法和易于嵌入其他系统而受到广泛欢迎。 1. **Lua简介** Lua是一种动态类型的...
标题中的“vb调用lua脚本案例,带mdlLua.bas模块”表明这是一个关于使用Visual Basic(VB)编程语言调用Lua脚本的实际应用实例。在这个案例中,开发者提供了一个名为`mdlLua.bas`的模块,这个模块是将Lua的原始C语言...
在Windows操作系统中,开发C程序并调用Lua脚本是一个常见的需求,特别是在游戏开发、自动化脚本或者其他需要灵活脚本支持的场景。MinGW(Minimalist GNU for Windows)是一个为Windows提供GNU工具集的开源项目,它...
LuaJava是一个优秀的开源项目,它提供了在Lua脚本语言中调用Java类库的能力,极大地扩展了Lua的功能。在本文中,我们将深入探讨如何在64位的CentOS操作系统上编译和使用Luajava 1.1版本。这个版本包含了两个关键的...
总结来说,"Javaweb中调用lua的插件"是一个实现Java和Lua互操作的工具,通过luajava库,开发者可以在JavaWeb应用中灵活地使用Lua脚本,同时利用Java的强大功能和稳定性。这对于需要快速迭代和灵活性的项目,尤其是...
5. **调用Lua函数**:如果需要在Lua脚本中定义函数并从C++调用,可以使用`cocos2d::CCScriptEngineProtocol::callFunction("lua_function_name", args...)`,其中`lua_function_name`是Lua中的函数名,`args...`是...
2. **配置和动态更新**:Lua脚本可以作为配置文件,动态改变游戏参数或系统设置,无需重新编译Java代码。 3. **热修复和扩展**:如果游戏中发现bug,可以通过更新Lua脚本来快速修复,而不用发布新版本。 4. **用户...
本示例“vc程序调用lua脚本简单示例”正好展示了如何在Visual C++ (vc++)环境中调用Lua脚本来实现这一目标。Lua是一种轻量级的、动态的、解释型的脚本语言,常用于游戏开发、配置文件解析和其他需要嵌入式脚本的语言...
在本例程中,STM32F103被用于运行Lua脚本,这是一种轻量级的、可嵌入式的脚本语言,通常用于游戏开发、自动化任务和快速原型设计。 Lua的移植意味着将Lua解释器的源代码修改和编译,使其能在STM32F103的硬件平台上...
本文将详细介绍如何在C++环境中调用Lua脚本,并通过一个具体的示例来演示这一过程。 #### 二、测试环境搭建 1. **环境准备**: - 操作系统:Windows 7 - IDE:Visual Studio 2005 - Lua版本:LuaForWindows_v...
C#调用lua脚本,适合初始了解的朋友 Lua [1] 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz ...
这些库提供了Java与Lua之间的桥接,使得开发者可以在Java程序中调用Lua函数,反之亦然。 总之,Lua的编译和反编译是其开发流程中的重要环节,luac是官方提供的标准工具,而luadec等第三方工具则用于辅助字节码的反...
通过这些文件,你可以学习到如何在易语言环境中使用Lua,包括导入库、调用Lua函数、执行Lua脚本以及如何处理返回的结果。这对于想在易语言项目中利用Lua的强大功能,比如实现动态配置、游戏逻辑或者复杂的算法,是...
4. 编写C++代码来调用Lua脚本,例如加载游戏场景、执行用户输入响应等。 5. 在Lua脚本中定义游戏逻辑,例如角色行为、事件处理等。 6. 将Lua脚本与C++代码交互,实现游戏功能。 六、实例分析 在提供的"12238868761...
luajava-1.1.jar是LuaJava的Java库文件,包含了LuaJava的全部Java类和接口,使得Java开发者能够调用Lua环境并执行Lua脚本。在Java程序中,你可以通过`java.lang.ClassLoader`加载此jar包,然后使用`LuajavaLib`类来...
"说明.txt"文件很可能是对如何集成和使用这些库的详细指南,包括如何加载luajava库,如何在Lua中调用Java类,以及如何在Java中执行Lua脚本等步骤。通常,它会提供示例代码帮助开发者快速上手。 总结来说,luajava-...
Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。 Lua由...
本文将深入探讨如何在C++项目中使用Lua脚本,以"LuaDemo"为例,介绍一个在Visual Studio 2008环境下可编译通过的实例。 首先,我们需要了解C++和Lua的基本概念。C++是一种强大的、静态类型的、编译式的、通用的、大...