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的引用:



不啰嗦、直接上代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LuaInterface; namespace CSharpToLua
{
class Program
{
static void Main(string[] args)
{
// 新建一个Lua解释器,每一个Lua实例都相互独立, 一个global全局域
Lua lua = new Lua(); //---------------------------------------------------
// Lua的索引操作[]可以创建、访问、修改global域
lua["age"] = ;
lua["name"] = "Mr.huang"; string luaCode = "print(\"This is Lua code\")";
lua.DoString(luaCode);//执行lua脚本代码
lua.DoFile("F:\\CSharpToLua\\CSharpToLua\\ScriptsFromFile.lua");//执行lua脚本文件,这里我直接用了绝对定位 double age = (double)lua["age"]; Console.WriteLine("age = {0}", age);
Console.WriteLine("width = {0}", lua["width"]);
Console.ReadKey();
}
} }
可以跟着敲一遍,提高与代码的亲密度 ~.~ And then 点击启动
咦、这时会出现一个报错、但是不要紧、

解决方案:

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

简单的介绍C#如何调用Lua代码、当然、还有很多丰富的API小伙伴们可以自行查阅哟。
(二)Lua调用C#
直接上代码 ~.~
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LuaInterface; namespace CSharpToLua
{
class Program
{
static void Main(string[] args)
{
// 新建一个Lua解释器,每一个Lua实例都相互独立, 一个global全局域
Lua lua = new Lua(); //---------------------------------------------------lua调用c#函数
TestClass obj = new TestClass(); // 注册CLR对象方法到Lua,供Lua调用 typeof(TestClass).GetMethod("TestPrint")
lua.RegisterFunction("TestPrint", obj, obj.GetType().GetMethod("TestPrint")); // 注册CLR静态方法到Lua,供Lua调用
lua.RegisterFunction("TestStaticPrint", null, typeof(TestClass).GetMethod("TestStaticPrint")); lua.DoString("TestPrint(10)");
lua.DoString("TestStaticPrint()"); Console.ReadKey();
}
} class TestClass
{
private int value = ; public void TestPrint(int num)
{
value = num;
Console.WriteLine("CSharp"+value);
} public static void TestStaticPrint()
{
Console.WriteLine("TestStaticPrint");
}
}
}
点击运行.................

perfect~.~ 当然、这里只是简单的介绍C#与Lua是如何相互调用的、小伙伴可自行Google大量丰富的API方便开发哟
重要的事要说三遍:LuaInterface是主要接口、LuaInterface是主要接口、LuaInterface是主要接口
C#与lua相互调用的更多相关文章
- Unity3D 预备知识:C#与Lua相互调用
在使用Unity开发游戏以支持热更新的方案中,使用ULua是比较成熟的一种方案.那么,在使用ULua之前,我们必须先搞清楚,C#与Lua是怎样交互的了? 简单地说,c#调用lua, 是c# 通过Pin ...
- 原生实现C#和Lua相互调用-Unity3D可用
引言 本篇简单介绍如何在C#中执行Lua脚本,传递数据到Lua中使用,以及Lua中调用C#导出的方法等.在Unity中开发测试,并打IL2CPP的Android包在模拟器上运行通过.Lua版本 ...
- Lua与C++相互调用
{--1.环境--} 为了快速入手,使用了小巧快速的vc++6.0编译器 以及在官网下载了Lua安装包..官网地址{--http://10.21.210.18/seeyon/index.jsp--} ...
- C程序与Lua脚本相互调用
Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...
- uLua学习笔记(三):Unity3D和Lua之间的相互调用
这篇笔记主要集中学习一下uLua和Unity3D之间相互调用的方法,我们导入了uLua之后,现在会弹出一个类似学习屏幕的东西,如下: 先赞一个! Unity3D调用Lua Unity3D调用Lua的方 ...
- lua语言自学知识点----Lua与.Net相互调用
知识点: LuaInterface作用是用来完成Lua与C#的相互调用. LuaInterface核心库:1.luainterface.dll 用于C#读取lua(放在bin目录同级) 2.luane ...
- Lua 与 OC 相互调用
本文主要讲如何完成lua和object-c的相互调用. lua是一种脚本语言,可以方便的移植到各种宿主语言中,并且可以支持热更新,在游戏开发中也能当做主要的语言来编写游戏的逻辑,但是要接入 ...
- lua编程之lua与C相互调用
lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情 ...
- Lua学习笔记6:C++和Lua的相互调用
曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项 ...
随机推荐
- dotnet core 2.0在ubuntu下安装失败
在ubuntu下安装.net core2.0失败了,不知道是什么原因.按照微软官方的步骤.似乎走不通.偶然翻到debian的安装方法,发现debian系统居然是直接下载包安装的.没经过apt.尝试一把 ...
- 在web中使用HTTPS
背景 目前网上流行的是HTTP协议,HTTPS协议还在逐步推广的过程中. HTTP协议以明文发送内容,容易被攻击者窃听.HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份[ ...
- 转换时间对象和字符串对象&添加时间
/* *基本思路,将字符串时间转化为时间对象,通过毫秒数来加减时间,然后在转化为字符串输出 */ //转化字符时间yy-mm-dd hh:mm:ss 为时间对象 使用split进行字符串的分割,取 ...
- 【转】String字符串相加的问题
String字符串相加的问题 前几天同事跟我说我之前写的代码中在操作字符串时候,使用字符串相加的方式而不是使用StringBuffer或者StringBuilder导致内存开销很大.这个问题一直在困扰 ...
- 在CentOS6上配置MHA过程全记录
在CentOS6上配置MHA过程全记录 MHA(Master High Availability)是一款开源的MariaDB or MySQL高可用程序,为MariaDB or MySQL主从复制架构 ...
- Linux下安装与配置Nginx
一.准备 Nginx版本:nginx-1.7.7.tar.gz 请自行到官网下载对应的版本. 二.步骤 ♦在Linux新建一个queenLove用户 [root@localhost /]# use ...
- 自签名的https证书是不安全的
一.项目内的需求 我们做的app都是企业级的应用,而企业级的应用的下载需要遵循itms协议,itms协议下需要https链接,这就需要你的服务器支持https的协议,该协议需要申请SSL证书,我们测试 ...
- java基本的要点
我想告诉大家的不是什么java基本要点,只是对初学者的一点忠告,本人是从八维学校亲身经历过的学生,要想学好并且快速了解java,那你首先必须有英语底子,没有英语底子,几个单词都不会的,我觉得还是放弃学 ...
- C#打印机操作类
using System; using System.Collections.Generic; using System.Text; namespace MacPrinter { public cla ...
- 怎么用SQL语句备份和恢复数据库?
BACKUP DATABASE "mydb" TO DISK ='C:\mybak.db' with init RESTORE DATABASE "mydb" ...