vJine 第三波 之 Lua 来袭 vJine.Lua
vJine.Lua
vJine.Lua是Lua语言的C#封装库,可实现通过C#直接运行Lua脚本并与Lua脚本交互的功能。
1. 授权:
相关资源:
nuget:(https://www.nuget.org/packages?q=vjine)
API文档:(http://git.oschina.net/vjine/vJine.Lua/attach_files)
Lua官网:(http://www.lua.org)
Lua中国开发者:(http://www.luaer.cn)
babelua(基于Visual Studio扩展的Lua编辑器):(https://babelua.codeplex.com/)
QQ群:115051701
2. 说明:
1)vJine.Lua采用C++/CIL封装自Lua,当前Lua版本为(Lua 5.3.0)
2)暂不支持方法重载,注入时同名方法将被覆盖。
3. 功能简介:
//引用命名空间
using vJine.Lua;
//获取Lua版本
string V = LuaContext.Version;
//实例化LuaContext
LuaContext luaContext = new LuaContext();
string vars_name = "vJine.Lua.Vars.bool";
//设置与读取堆栈变量
bool v_bool = true;
luaContext.set(true);
luaContext.get(out v_bool);
Debug.Assert(v_bool == true);
luaContext.set(false);
luaContext.get(out v_bool);
Debug.Assert(v_bool == false);
//设置与读取全局变量
luaContext.set(vars_name, true);
luaContext.get(vars_name, out v_bool);
Debug.Assert(v_bool == true);
luaContext.set(vars_name, false);
luaContext.get(vars_name, out v_bool);
Debug.Assert(v_bool == false);
//注册:匿名方法
luaContext.reg("vJine.Lua.funcs.anony", new Action<MyStatus>((MyStatus E) => {
string msg = string.Format("result[anonymous]:{0}", E);
}));
//注册:静态方法
luaContext.reg("vJine.Lua.funcs.M", new Action<MyStatus>(MyClass.M));
//注册:实例方法
MyClass xq = new MyClass();
luaContext.reg("vJine.Lua.funcs.m", new Action<MyStatus>(x1.m));
//注册类:默认名称
luaContext.reg<MyClass>();
//注册类:自定义名称
luaContext.reg<MyClass>("vJine.Lua.YourClass");
//注入脚本:
object[] R = luaContext.inject(
"function callback(my_arg) return my_arg .. ' on_the_fly' end return true, 1.234, callback('vJine.Lua')");
//调用脚本
object[] Obj = luaContext.exec("callback", "vJine.Lua");
//加载脚本:
R = luaContext.load("d:/vJine.Lua/start.lua");
//打印堆栈变量:
luaContext.print_vars();
//打印全局变量:
luaContext.print_var("vJine.Lua.UT.MyClass");
//类定义:
public class MyClass {
public MyClass My { get; set; }
public bool B { get; set; }
public bool? b { get; set; }
public byte[] B_ { get; set; }
public double D { get; set; }
public double d { get; set; }
public Guid G { get; set; }
public Guid? g { get; set; }
public Guid[] G_ { get; set; }
public string S { get; set; }
public string s { get; set; }
public string[] s_ { get; set; }
public DateTime DT { get; set; }
public DateTime? dt { get; set; }
public DateTime[] DT_ { get; set; }
public MyStatus E { get; set; }
public MyStatus? e { get; set; }
public MyStatus[] E_ { get; set; }
publicstaticvoidM(MyStatusE){
string msg = string.Format("result[anonymous]:{0}", E);
}
publicvoidm(MyStatusE){
string msg = string.Format("result[anonymous]:{0}", E);
}
publicstaticstringSM(inta,stringb){
return string.Format("SM:Result:a,{0};b,{1}", a, b);
}
publicstringIM(inta,stringb){
return string.Format("IM:Result:a,{0};b,{1}", a, b);
}
publicstringshow_properties(){
return string.Format("Properties:b,{0};d,{1};s,{2}", this.B, this.D, this.s);
}
}
vJine 第三波 之 Lua 来袭 vJine.Lua的更多相关文章
- 轮子来袭 vJine.Core Orm 之 04_使用进阶
1.配置文件: 框架默认情况下支持"connectionStrings"的配置方式,如<轮子来袭 vJine.Core Orm 之 01_快速入门>所述: 框架的进阶设 ...
- 轮子来袭 vJine.Core Orm 之 03_架构分析
1.vJine.Core ORM 架构: 如上图所示,vJine.Core ORM的特点如下: 所有操作均以DataManager为核心: DataManager业务部分的增删改查操作依赖于Class ...
- Lua 架构 The Lua Architecture
转载自:http://magicpanda.net/2010/10/lua%E6%9E%B6%E6%9E%84%E6%96%87%E6%A1%A3/ Lua架构文档(翻译) 十 102010 前段时间 ...
- VC和VS调用Lua设置以及Lua C API使用。
通过c++调用lua 脚本, 环境VC++6.0 lua sdk 5.1.4 在调用前先认识几个函数.1.调用lua_open()将创建一个指向Lua解释器的指针.2. luaL_ope ...
- lua调用不同lua文件中的函数
a.lua和b.lua在同一个目录下 a.lua调用b.lua中的test方法,注意b中test的写法 _M 和 a中调用方法: b.lua local _M = {}function _M.test ...
- 通过lua栈了解lua与c的交互
lua是如何执行的 其中分析.执行部分都是c语言实现的. lua与c的关系 lua的虚拟机是用c语言实现的,换句话说一段lua指令最终在执行时都是当作c语言来执行的,lua的global表,函数调用栈 ...
- lua编程之lua与C相互调用
lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情 ...
- lua脚本之lua语言简介以及lua的安装
本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解. 一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...
- Lua基本语法-lua与C#的交互(相当简单详细的例子)
lua脚本 与 C#的交互 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lua And C# -- ...
随机推荐
- cocos2d-x 缓动曲线
转自:http://blog.csdn.net/cocos2der/article/details/7261808 在实现运动中,我们常常需要实现一些加速度或者减速度的效果,cocos2d-x引擎为我 ...
- UVa10050 Hartals
// 题意:输入n和p个整数H[i],其中H[i]表示每H[i]天会有一次活动(但周五周六除外).输出前n天中有多少天有活动.模拟从周日开始. #include<cstdio> #in ...
- C#开发的WebService使用JSON格式传递数据+Ajax测试
[C#] WebService 使用 JSON 格式傳遞筆記 + JQuery 測試 0 2 因為一些因素,必須改寫WebService,很傳統,但是很多公司還在用.. 因為XML 的關係,不想讓他 ...
- ZOJ 1151 Word Reversal反转单词 (string字符串处理)
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=151 For each list of words, output a l ...
- python写的百度贴吧相册下载
突然想搞个这样的工具,写来写去都不知道在干嘛了,本来两个文件,现在整合在一起了. 乱得不行,懒得整理了,能用就行. 下载部分用了多线程,但是下载一个文件还是用的单线程,也就是没管http头的range ...
- cocos2d粒子效果
第9章 粒子效果 游戏开发者通常使用粒子系统来制作视觉特效.粒子系统能够发射大量细小的粒子并对他们进行渲染,而且效率要远高于渲染同样数目的精灵.粒子系统可以模拟下雨.火焰.雪.爆炸.蒸气拖尾以及其他多 ...
- MYSQL内存--------启动mysql缓存机制,实现命中率100% 转
虽然这个标题夸张得过了头,但此文很完整,值得学习.转自 http://www.yy520.net/read.php?278 myql优化,启动MySQL缓存机制,实现命中率100% 配置你的mysql ...
- 进程环境之getrlimit和setrlimit函数
每个进程都有一组资源限制,其中一些可以用getrlimit和setrlimit函数查询和更改. #include <sys/resource.h> int getrlimit( int r ...
- VBA Mysql 类
Option Explicit '==================================== 声明属性 =================================Private ...
- SQL Server 数学函数 相关
1.计算绝对值ABS ABS函数对一个数值表达式结果计算绝对值(bit数据类型除外),返回整数. 语法结构: ABS(数值表达式) 返回值:与数值表达式类型一致的数据 示例: SELECT ABS ...