c#调用脚本语言Lua——简单Demo

配置:

1. 下载c#下的Lua支持类库。下载地址:http://files.luaforge.net/releases/luainterface/luainterface/2.0.3

将(lua51.dll\LuaInterface.dll)引用自己的项目中。

2. 修改App.config添加以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku = ".NETFramework,Version=v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

否则,运行代码会出现以下提示:

混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

调用步骤:

1. 声明Lua虚拟机

Lua m_lua = new Lua();

2. 将c#的对象方法注册到Lua中,使Lua可以调用该方法。

class MyClass {

public string MyStr(string s)

{

return s + " World !";

}

}

MyClass my = new MyClass();

m_lua.RegisterFunction("MyStr", my, my.GetType().GetMethod("MyStr"));

3. 加载Lua代码

m_lua.DoFile("lua_test.lua");

4. 调用Lua方法

Object[] objs = m_lua.GetFunction("MyNum").Call(100);

Demo代码:

using LuaInterface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lua_test
{
    class MyClass {
        public string MyStr(string s)
        {
            return s + " World !";
        }
    }
    class Program
    {
        public static Lua m_lua = null;        //创建lua虚拟机
        static public void init() {
            MyClass my = new MyClass();             //创建自定义类实例
            //在lua虚拟机(全局)中注册自定义函数,一边在lua文件中调用该函数
            m_lua.RegisterFunction("MyStr", my, my.GetType().GetMethod("MyStr"));
            m_lua.DoFile("lua_test.lua");           //加载lua文件(绝对路径)
        }
        static void Main(string[] args)
        {
            m_lua = new Lua();
            init();
            //加载乱文件后,使用GetFunction获取函数,再调用Call执行(传参数)
            Object[] objs = m_lua.GetFunction("MyNum").Call(100);
            //Call函数的返回值为一个Object数组
            foreach(Object obj in objs){
                Console.WriteLine(obj);
            }
            Console.ReadLine();
        }
    }
}

Demo下载:

http://download.csdn.net/detail/e421083458/8432515

PS:最简单的学习方法就是拿到一个可以运行的Demo。

时间: 2024-10-22 18:31:22

c#调用脚本语言Lua——简单Demo的相关文章

Cocos2d-x 脚本语言Lua基本语法

Cocos2d-x 脚本语言Lua基本语法 前面一篇博客对Lua这门小巧的语言进行了简单的介绍.本篇博客来给大家略微讲一下Lua的语法.不会长篇累牍得把Lua的全部语法都讲一遍,这里通过下面几点来讲Lua语言的基础语法: 输出语句 变量定义及赋值 方法定义及调用 for迭代器的使用 --输出语句,"--"为Lua语言凝视 print("Hello Lua") --输出"Hello Lua" --定义变量.local为Lua的keyword,用来声

Cocos2d-x 脚本语言Lua中的面向对象

Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类的定义.但相同在Lua中能够利用面向对象的思想来实现面向对象的类继承. 一.复制表的方式面向对象 --Lua中的面向对象 --[[ 复制表方式面向对象 參数为一张表.通过遍历这张表取值,赋给一张空表,最后返回新建的表.来达到克隆表 ]] function clone(tab) local ins =

Cocos2d-x 脚本语言Lua基本数据结构-表(table)

table是Lua中唯一的数据结构,其他语言所提供的数据结构,如:arrays.records.lists.queues.sets等,Lua都是通过table来实现,并且在lua中table很好的实现了这些数据结构.--摘自:<Programming in Lua> 看以下代码,可以很清晰的明白Lua中表的使用: -- Lua中的表,table Config = {hello="Hello Lua",world="World"} -- 赋值方式1,以键=

Cocos2d-x 脚本语言Lua介绍

Cocos2d-x 脚本语言Lua介绍 本篇博客记录Lua学习.学习来自eoe论坛,Lua语言开发Cocos2d-x游戏入门视频教程,猛戳下面地址: http://www.eoeandroid.com/thread-320602-1-1.html 由于Lua语言小巧.简单.能与C/C++无缝结合.运行高速.易于更新等长处,越来越多的公司在使用Lua语言进行游戏开发,而非常多Cocos2d-xproject师的招聘要求上直接写明要求会Lua语言.我了解到一家公司在开发Cocos2d-x游戏时游戏逻

如何在Java平台上使用脚本语言做Java开发

如何在Java平台上使用脚本语言做Java开发     最近开始流行区分Java平台和Java语言,但很多Java开发者还是不能确定如何在 Java应用程序开发中结合脚本.本篇文章,Gregor Roth给出了在Java平台上使用脚本的方法.通过这篇文章,你可以了解怎样在你的Java应用程序中使用脚本,是否你要通过使用Groovy和 Jython把不同的Java应用程序模块粘合在一起,或者写一个你自己的基于JRuby的应用程序,适用于Java平台. 作为一个Java开发者,你可能已经注意到了,J

脚本语言有哪些?

1. 脚本语言有很多种,像是我们常见的Cmd命令也可以算是一种脚本,你说的脚本语言应该是Web应用程序的脚本. 这类的常见的有JavaScript.VBScript.Perl.PHP.Python.Ruby. 脚本语言的特点是语法简单,一般以文本形式保存,并且不需要编译成目标程序,在调用的时候直接解释.这可以当做是脚本语言的判断标准,比如说JavaScript,你只需要用记事本新建一个Html文件,在里面加上一段脚本就可以了,在浏览器打开Html文件时自然会调用JS脚本. 总之你能用记事本写出程

脚本语言,面向对象语言,面向并发语言-杂谈

我 15:40 我看python写的是初学者的语言 这个有几层含义呢 是这个语言不够强大么? 永神 15:41 嗯 我 15:41 还是说这个语言简单易学? 永神 15:41 比较简单 应该是脚本类的语言 肯定不如JAVA C++强大 一般程序员,拿来作为一个辅助的技能 而不是专门作为一个职业 我 15:42 那java这些算什么语言啊 高级程序开发语言? 永神 15:42 JAVA啊,面向对象语言,是一个体系 高级程序语言指的是对计算机来说高级 我 15:43 那linux的shell呢?和p

Lua脚本语言简单学习

最近要研究Nmap的脚本编写,于是特定来看一下lua语言 什么是Lua Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.可用于游戏开发.独立应用脚本.Web应用脚本.扩展和数据库插件.安全系统等. Lua语言特性 轻量级:它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里 可扩展:Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,L

lua语言的简单介绍(1)

第一次写,写的不好希望各位看官多包涵 首先简单介绍下lua语言 Lua[1]是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发. 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.Lua由标准C编写而成,