在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
工程环境搭建:
很多帖子并没有讲清楚导致报错: “LuaInterface.LuaException”类型的未经处理的异常在 LuaInterface.dll 中发生 其他信息: error loading module 'luanet' from file '.\luanet.dll' 也就是云哥我这么给力
1 namespace TestLua 2 { 3 public class Program 4 { 5 6 public string name = "zhaozongyun"; 7 static void Main(string[] args) 8 { 9 //创建lua解释器(也叫Lua虚拟机) 10 Lua lua1 = new Lua(); 11 12 Console.WriteLine("--->> C#中执行Lua字符串"); 13 14 //C#中执行Lua字符串 15 lua1.DoString("num = 111"); 16 lua1.DoString("str = 'zhaozongyun'"); 17 Object[] values = lua1.DoString("return num, str"); 18 foreach (Object obj in values) 19 { 20 Console.WriteLine(obj); 21 } 22 23 Console.WriteLine("--->> C#注册的普通方法到Lua中,并执行Lua字符串"); 24 25 //C#注册的普通方法到lua中,并执行Lua字符串 26 Program p = new Program(); 27 Lua lua2 = new Lua(); 28 lua2.RegisterFunction("LuaMethod1", p, p.GetType().GetMethod("CLRMethod")); 29 lua2.DoString("LuaMethod1()"); 30 31 Console.WriteLine("--->> C#注册静态方法到Lua中,并执行Lua字符串"); 32 33 //C#注册静态方法到Lua中,并执行Lua字符串 34 lua2.RegisterFunction("LuaMethod2", null, typeof(Program).GetMethod("StaticMethod")); 35 lua2.DoString("LuaMethod2()"); 36 37 Console.WriteLine("--->> C#中执行Lua脚本"); 38 39 //C#中执行lua脚本文件 40 Lua lua3 = new Lua(); 41 lua3.DoFile("myLua1.lua"); 42 43 Console.WriteLine("--->>C#执行Lua脚本,Lua脚本中加载C#类,并访问C#"); 44 45 //C#执行Lua文件,Lua文件加载C#类,并调用C# 46 Lua lua4 = new Lua(); 47 lua4.DoFile("myLua2.lua"); 48 lua4.DoFile("myLua3.lua"); 49 50 Console.ReadKey(); 51 } 52 53 public void CLRMethod() 54 { 55 Console.WriteLine("CLRMethod"); 56 } 57 58 public static void StaticMethod() 59 { 60 Console.WriteLine("StaticMethod"); 61 } 62 } 63 }
Lua1脚本 1 num = 222 2 string = "hello world" 3 print(string) Lua2脚本 1 --加载CLR的类型、实例化CLR对象 2 luanet.load_assembly("System") 3 Int32 = luanet.import_type("System.Int32") 4 print(Int32) Lua3脚本 1 --require "luanet" 2 --加载CLR的类型 3 luanet.load_assembly("TestLua") 4 Program = luanet.import_type("TestLua.Program") 5 --实例化CLR对象 6 program = Program() 7 print(program.name) 8 program:CLRMethod() |
请发表评论