这几天在搞指纹打卡机,搞着搞着就摸到lua拉,真是摸到哪,学到哪。算是第一次写博客吧,不为其他,只想把自己的想法记起来。
因为已经有人封装好了Lua,所以我们只需要下载LuaInterface.dll插件,在项目的exe文件里,还要lua51.dll,luanet.dll,才能确保正确编译。
然后只需要在项目里引用LuaInterface.dll,就可以用封装的函数了。
C#---------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LuaInterface;
namespace TestLua
{
class Program
{
public static Lua lua = new Lua();//声明Lua对象
public static void init()
{
Program p = new Program();
//注册关联函数,这里主要起到C#函数与Lua函数的绑定,其实功能是一样的,
//SecondTestB -- 为Lua脚本内部的函数名,SecondTestA为Program Class 内部的函数
lua.RegisterFunction("SecondTestB", p, p.GetType().GetMethod("SecondTestA"));
//打开test1.lua脚本,这里采用的绝对路径
//lua.DoFile(AppDomain.CurrentDomain.BaseDirectory + "test1.lua");
lua.DoFile(@".\test1.lua");
//Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory);
}
public void SecondTestA(string str)
{
Console.WriteLine(str);
}
static void Main(string[] args)
{
init();
lua.GetFunction("FirstTest").Call();//直接获取Lua函数,同时赋值null
}
}
}
Lua----------------------------------------------------------------------------------------------------------------------------
--函数明,在C#里需要GetFunction的函数
function FirstTest()
--在C#注册的函数,直接赋值,同时C#也会同步赋值
SecondTestB("Hello")
end