1lua加入到环境变量中。即cmd可以识别lua命令
(右键计算机-》高级系统设置 在高级面板 -》环境变量 在系统变量或者用户变量中找到path(没有就新建path) path 中加入lua的路径即可,如:D:\Developments\Lua\51(原来有path时,在原来的path值后加分号,再加路径,如:原来的值;D:\Developments\Lua\51))
2写一个lua的脚本,放在任意路径下。比如在桌面下有文件 hellolua文件内容为
print('Hello World!')
3进入cmd(win+R 输入cmd回车) 切到桌面
cd C:\Documents\Desktop\
运行脚本即可:lua hellolua
输出结果为:Hello World!
要是你只想调用一个程序的话,我觉得可以把你那个程序编译以后,用osexecute ([command])这个函数执行。
This function is equivalent to the C function system It passes command to be executed by an operating system shell It returns a status code, which is system-dependent If command is absent, then it returns nonzero if a shell is available and zero otherwise
比如你那个程序编译以后叫“aexe”且和lua程序在同一目录,然后你在lua里直接些osexecute("//aexe")就好了。
目前的示例程序是使用 FFI 库来实现的 从 Lua 调用 C# 函数。 FFI 因为用到了反射机制来调用C# 函数,性能会比较低。 应该尽量避免使用,如果没有找到更好的办法,准备之后把这个FFI实现废弃掉。 其实直接用 C# 实现一个库的形式,来让 lua 调用这种传统的做法效率会比较高,也是推荐采用的方式。而且也并不会麻烦太多。
比如我现在要实现一个叫 libfoo 的库, 里面提供两个方法: add(a, b) 和 sub(a, b)
库的实现
using UniLua;public static class LibFoo
{
public const string LIB_NAME = "libfoocs"; // 库的名称, 可以是任意字符串
public static int OpenLib(ILuaState lua) // 库的初始化函数
{
var define = new NameFuncPair[]
{
new NameFuncPair("add", Add),
new NameFuncPair("sub", Sub),
};
luaL_NewLib(define);
return 1;
}
public static int Add(ILuaState lua)
{
var a = luaL_CheckNumber( 1 ); // 第一个参数
var b = luaL_CheckNumber( 2 ); // 第二个参数
var c = a + b; // 执行加法 *** 作
luaPushNumber( c ); // 将返回值入栈
return 1; // 有一个返回值
}
public static int Sub(ILuaState lua)
{
var a = luaL_CheckNumber( 1 ); // 第一个参数
var b = luaL_CheckNumber( 2 ); // 第二个参数
var c = a - b; // 执行减法 *** 作
luaPushNumber( c ); // 将返回值入栈
return 1; // 有一个返回值
}
}
库的初始化
// 创建 Lua 虚拟机var Lua = LuaAPINewState();
// 加载基本库
LuaL_OpenLibs();
LuaL_RequireF( LibFooLIB_NAME // 库的名字
, LibFooOpenLib // 库的初始化函数
, false // 不默认放到全局命名空间 (在需要的地方用require获取)
);
库的使用 (在 lua 代码中)
// 获取库local libfoo = require "libfoocs"
// 调用库的方法
print(libfooadd(42, 1))
print(libfoosub(42, 22))
以上就是关于请教如何用.lua调用.java包内的方法和变量全部的内容,包括:请教如何用.lua调用.java包内的方法和变量、怎么用lua 调用一个简单的 c程序、ulua中lua怎么调用c#的函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)