最热门棋牌游戏平台 当前位置:首页>最热门棋牌游戏平台>正文

最热门棋牌游戏平台

发布时间:2018-11-17

原标题:C#与lua相互调用

如遇【线上娱乐站】不能自动打开,请复制 http://da8.us 到浏览器,注册自动送8-88试 ̶̶̶̶̶̶̶̶̶̶玩 ̷̷̷̷̷̷̷̷̷̷金。体验各种类的线上PT/DT/MG/PNG ̶̶̶̶̶̶̶̶̶̶老 ̷̷̷̷̷̷̷̷̷̷虎 ̷̷̷̷̷̷̷̷̷̷机、 ̷̷̷̷̷̷̷̷̷̷真* ̷̷̷̷̷̷̷̷̷̷人* ̶̶̶̶̶̶̶̶̶̶百* ̶̶̶̶̶̶̶̶̶̶家 ̷̷̷̷̷̷̷̷̷̷*乐*游戏等免费试玩、优惠活动,7*24小时专业服务

C#与lua相互调用


  Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库。LuaInterface则用于实现Lua和CLR的混合编程。

(一)C#调用Lua

  测试环境:在VS2015中建一个C#控制台应用程序,并添加LuaInterface.dll的引用

  LuaInterface下载地址:http://luaforge.net/projects/luainterface/ (下载luainterface-1.5.3,这里面的资源比较多)

  LuaInterface.Lua类是CLR访问Lua解释器的主要接口,一个LuaInterface.Lua类对象就代表了一个Lua解释器(或Lua执行环境),Lua解释器可以同时存在多个,并且它们之间是完全相互独立的。

  简单说明下步骤:

  

  在根目录处添加LuaInterface.dll的引用:

  

  

  

  不啰嗦、直接上代码:

  

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using LuaInterface;
 7 
 8 namespace CSharpToLua
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             // 新建一个Lua解释器,每一个Lua实例都相互独立, 一个global全局域
15             Lua lua = new Lua();
16 
17             //---------------------------------------------------
18             // Lua的索引操作[]可以创建、访问、修改global域
19             lua["age"] = 20;
20             lua["name"] = "Mr.huang";
21 
22             string luaCode = "print("This is Lua code")";
23             lua.DoString(luaCode);//执行lua脚本代码
24                 lua.DoFile("F:\CSharpToLua\CSharpToLua\ScriptsFromFile.lua");//执行lua脚本文件,这里我直接用了绝对定位
25 
26             double age = (double)lua["age"];
27 
28             Console.WriteLine("age = {0}", age);
29             Console.WriteLine("width = {0}", lua["width"]);
30             Console.ReadKey();
31         }
32     }
33 
34 }

  可以跟着敲一遍,提高与代码的亲密度 ~.~   And then 点击启动

  咦、这时会出现一个报错、但是不要紧、

  

  解决方案:

  

  再次运行、就可以看到结果啦、惊不惊喜、意不意外

  

  简单的介绍C#如何调用Lua代码、当然、还有很多丰富的API小伙伴们可以自行查阅哟。

 

(二)Lua调用C#

  直接上代码 ~.~

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using LuaInterface;
 7 
 8 namespace CSharpToLua
 9 {
10     class Program
11     {
12         static void Main(string[] args)
13         {
14             // 新建一个Lua解释器,每一个Lua实例都相互独立, 一个global全局域
15             Lua lua = new Lua();
16 
17 
18             //---------------------------------------------------lua调用c#函数
19             TestClass obj = new TestClass();
20 
21             // 注册CLR对象方法到Lua,供Lua调用   typeof(TestClass).GetMethod("TestPrint")
22             lua.RegisterFunction("TestPrint", obj, obj.GetType().GetMethod("TestPrint"));
23 
24             // 注册CLR静态方法到Lua,供Lua调用
25             lua.RegisterFunction("TestStaticPrint", null, typeof(TestClass).GetMethod("TestStaticPrint"));
26 
27             lua.DoString("TestPrint(10)");
28             lua.DoString("TestStaticPrint()");
29 
30             Console.ReadKey();
31         }
32     }
33 
34     class TestClass
35     {
36         private int value = 0;
37 
38         public void TestPrint(int num)
39         {
40             value = num;
41             Console.WriteLine("CSharp"+value);
42         }
43 
44         public static void TestStaticPrint()
45         {
46             Console.WriteLine("TestStaticPrint");
47         }
48     }
49 }

 

  点击运行.................

   

  perfect~.~   当然、这里只是简单的介绍C#与Lua是如何相互调用的、小伙伴可自行Google大量丰富的API方便开发哟

  重要的事要说三遍:LuaInterface是主要接口、LuaInterface是主要接口、LuaInterface是主要接口

 

当前文章:http://www.nrycenter.cn/Lhwxm67/2017/1020/424596818.html

发布时间:2018-11-17 00:00:00

鞍山麻将 宝博大厅下载安装4.0 波克棋牌官方到桌面 波克棋牌下载完整版 成都麻将火锅 传奇扑克app下载 打得最大的棋牌游戏 打牌比赛规则 大富豪棋牌游戏手机版 大胡棋牌游戏app器

78882 35671 68261 61992 32385 1885655649 26012 47676

责任编辑:龙安

随机推荐