c#调用脚本语言Lua——简单Demo
2017-04-09 20:43
1441 查看
c#调用脚本语言Lua——简单Demo
配置:
Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库。LuaInterface则用于实现Lua和CLR的混合编程。
1. 下载c#下的Lua支持类库。下载地址:http://files.luaforge.NET/releases/luainterface/luainterface/2.0.3
将(lua51.dll\LuaInterface.dll)引用自己的项目中。
2. 修改App.config添加以下内容:
[html] view
plain copy
print?
<?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"/> <
12de2
/li>
</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代码:
[csharp] view
plain copy
print?
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 href="http://lib.csdn.net/base/dotnet" target=_blank>.Net/detail/e421083458/8432515
PS:最简单的学习方法就是拿到一个可以运行的Demo。
相关文档:
http://www.cnblogs.com/zwywilliam/p/5999924.html
配置:
Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库。LuaInterface则用于实现Lua和CLR的混合编程。
1. 下载c#下的Lua支持类库。下载地址:http://files.luaforge.NET/releases/luainterface/luainterface/2.0.3
将(lua51.dll\LuaInterface.dll)引用自己的项目中。
2. 修改App.config添加以下内容:
[html] view
plain copy
print?
<?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"/> <
12de2
/li>
</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代码:
[csharp] view
plain copy
print?
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 href="http://lib.csdn.net/base/dotnet" target=_blank>.Net/detail/e421083458/8432515
PS:最简单的学习方法就是拿到一个可以运行的Demo。
相关文档:
http://www.cnblogs.com/zwywilliam/p/5999924.html
相关文章推荐
- c#调用脚本语言Lua——简单Demo
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- c#调用脚本语言Lua
- C#调用脚本语言(一)-- IronLua基本语法
- java中调用lua脚本语言1
- Lua 脚本语言 与 C的互相调用
- Lua脚本语言入门及魔兽争霸中的Lua函数调用
- 脚本语言Lua小试(安装及简单语法)
- C遍历LUA表和调用LUA函数的简单Demo
- c# winform窗体 调用js脚本语言,然后输出结果
- lua学习系列:c++调用lua脚本的简单示例
- 脚本语言Lua简单入门学习笔记
- 脚本语言lua笔记(6)Lua调用c++自定义函数
- C#中调用python脚本语言
- C#调用Python脚本的简单示例
- Windows 系统调用.COM.微软语言引擎简单应用(C#)
- C#调用脚本语言(二)-- IronJS基本语法
- LUA调用C++函数的一个简单Demo