随笔分类 - [81]Lua
-
用C#调用Lua脚本
摘要:用C#调用Lua脚本 一、引言 学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续。上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何编写Lua脚本和运行。由于我们这个系列是以Redis为主,所以也介绍了Redis和Lua如何进行整合 阅读全文
-
Lua 是一个小巧的脚本语言
摘要:Redis进阶实践之七Redis和Lua初步整合使用 一、引言 Redis学了一段时间了,基本的东西都没问题了。从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功能。lua脚本是用C语言写的,体积很小,运行速 阅读全文
-
macOS 上配置 Lua
摘要:【最新版】从零开始在 macOS 上配置 Lua 开发环境 脚本语言,你可能更需要的是 Lua 不同的脚本语言有不同的特性,第一接触的脚本语言,可能会影响自己对整个脚本语言的理解和认知。我以前接触最多的脚本语言是 JavaScript。后果就是:我一度以为脚本语言都是必须和宿主语言运行在不同的进程; 阅读全文
-
lua代码的加载
摘要:lua代码的加载 Openresty是什么 OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,通过把lua嵌入到Nginx中,使得我们可以用轻巧的lua语言进行nginx的相关开发,处理高并发,扩展性极高的动态 Web 应用、Web 服务和动态网关。 大家知道lua_co 阅读全文
-
tolua#是Unity静态绑定lua的一个解决方案
摘要:tolua#代码简要分析 2017-04-16 23:02 by 风恋残雪, 98 阅读, 1 评论, 收藏, 编辑 简介 tolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信息分析代码并生成包装的类。它是一个用来简化在C#中集成lua的插件,可以自动生成用于在lua中访问U 阅读全文
-
学Lua(上)
摘要:学Lua(上) 在很多游戏中,脚本语言是不可或缺的一部分,很多游戏都使用到了Lua,js,python一类的脚本,脚本语言可以在很多方面给开发进程带来帮助。脚本语言可以作为初始化文件读入变量和游戏数据的一个快速而方便的方法。它们通常因为具有节省编译时间提高生产效率、提高创造性和拓展性的有点而受到众多 阅读全文
-
Lua 解释器
摘要:Lua 解释器 警告⚠️:这将是一个又臭又长的系列教程,教程结束的时候,你将拥有一个除了性能差劲、扩展性差、标准库不完善之外,其他方面都和官方相差无几的 Lua 语言解释器。说白了,这个系列的教程实现的是一个玩具语言,仅供学习,无实用性。请谨慎 Follow,请谨慎 Follow,请谨慎 Follo 阅读全文
-
lua与c++交互全解析
摘要:lua与c++交互全解析lua与c++交互全解析作者:邓冶晶出处:http://www.cnblogs.com/wellbye/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名邓冶晶(包含链接). 最近经常见有人在群上问有关lua在c/c++中嵌入使用的问题,但很多问题本身问得就莫名所以,很可能是对一些基本概念还未正确理解就急于使用,遇到难处也没有认真思考问题的本质是什么,自然会问出一些叫人啼笑皆非、欲答无词的问题。正好这段时间赋闲在家,希望能把几年来对lua及c++的理解及经验总结一下,为同样喜欢这两样语言的同好做一个入门介绍。 从以下几个.. 阅读全文
-
如何正确的嵌入lua到c服务端中工作
摘要:【原创代码分享】如何正确的嵌入lua到c服务端中工作。(linux服务端方向) 回馈一下互联网事业,因为lua, erlang(接下来我要啃它)这些优秀的语言都是有鲜明特色的,在服务端方向持续钻研跟潮的同学都会从这些语言中得到思想的启迪,但这些语言又很少有优秀的资源分享出来供大家学习,因为我掌握了一些语言灵魂上的东西,所以分享到互联网上让其他爱好者能够更快的掌握。 如题, 代码做的事情: 将lua嵌入到了c语言编写的网络服务端中,支持yield异步API的编写,安全的管理会话与lua资源。 工作原理:一,c服务端框架: 1)一个session对应一个coroutine,所有sessi... 阅读全文
-
book.luaer.cn
摘要:实习结束了,在这里总结下实习的相关事宜。我去年十一月份入职的,刚入公司技术部人很少,我选择的是服务端开发,服务端就三四个人,客户端倒是有五六个人。第一天上班就是打开电脑,安装一些需要的工具。公司的做的产品是手游,主要使用的是脚本语言lua(不出名?魔兽就是用lua写的)。对于lua语言,我是很陌生的,所以安装完必备的工具后就开始学习lua了。我选择的教程是http://book.luaer.cn/(现在查api使用的是http://www.codingnow.com/2000/download/lua_manual.html)。大概花了1天时间把lua的语法了解了下。然后老大就安排了一个小东西 阅读全文
-
Lua中ipairs()和pairs()的区别与使用
摘要:Nick YangLearn and shareLua中ipairs()和pairs()的区别与使用关于ipairs()和pairs(),Lua官方手册是这样说明的:pairs (t)Ifthas a metamethod__pairs, calls it withtas argument and returns the first three results from the call.Otherwise, returns three values: thenextfunction, the tablet, andnil, so that the construction for k... 阅读全文
-
一种Lua到C的封装
摘要:一种Lua到C的封装在Lua的官方C API中,Lua与C通过一个虚拟栈来交互数据。例如有个a.lua的文件中有求和函数:function sum(a, b) return a + bend要在C代码中打开lua文件,并调用求和函数,大致要这样写:lua_State *s = luaL_newstate();luaL_openlibs(s);luaL_loadfile(s, "a.lua");lua_getglobal(s, "sum");lua_pushinteger(s, 1234);lua_pushinteger(s, 4321);lua_pcal 阅读全文
-
Step By Step(Lua目录)
摘要:之前已经说了很多,我目前的观点还是那样,在嵌入式脚本中,Lua是最优秀、最高效的,如果您有不同的观点,欢迎指正并讨论,切勿吐槽。这个系列完全来自于《Programming in Lua》,您可以将其视为本人的读书笔记。相比而言,如果您已经掌握了Lua,但仍然不是非常熟练,请相信这个系列一定会给您的查阅以及知识点回顾带来一定程度上的方便,至少我是这样的。然而对于Lua的初学者,还是建议直接看《Programming in Lua》。最近正在做一个项目的架构设计,打算使用Lua作为插件和框架之间的粘合剂,以及硬件协议的自描述脚本,从而可以动态扩展平台可以支持的硬件设备。好了,不说太多了,还是看看下 阅读全文
-
lua的网络库
摘要:以前曾经写过一篇为lua添加网络功能的博客,当然那篇文章提提供的lua网络接口纯粹是实验玩玩的,没有任何实用性.今天突然又想起了这件事,想用前段时间写的KendyNet为lua提供一套网络接口.这套接口是单线程的,通过PeekMsg获取网络事件,PeekMsg会在底层驱动epoll主循环.虽然也可以提供多线程的接口,在下面启动一个线程来驱动epoll,将事件提交到消息队列,由PeekMsg获取。但是,没人有会指望用lua写一个高性能的网络服务器,所以决定还是提供一个简单的接口,用来写写简单的小程序就可以了.首先介绍一下向lua提供的接口:lua_register(lState,"Co 阅读全文
-
userdata)
摘要:在Lua中可以通过自定义类型的方式与C语言代码更高效、更灵活的交互。这里我们通过一个简单完整的示例来学习一下Lua中userdata的使用方式。需要说明的是,该示例完全来自于Programming in Lua。其功能是用C程序实现一个Lua的布尔数组,以提供程序的执行效率。见下面的代码和关键性注释。 1 #include <lua.hpp> 2 #include <lauxlib.h> 3 #include <lualib.h> 4 #include <limits.h> 5 6 #define BITS_PER_WORD (CHAR_BIT 阅读全文
-
编写C函数的技巧
摘要:1. 数组操作: 在Lua中,“数组”只是table的一个别名,是指以一种特殊的方法来使用table。出于性能原因,Lua的C API为数组操作提供了专门的函数,如: void lua_rawgeti(lua_State* L, int index, int key); void lua_rawseti(lua_State* L, int index, int key); 以上两个函数分别用于读取和设置数组中的元素值。其中index参数表示待操作的table在栈中的位置,key表示元素在table中的索引值。由于这两个函数均为原始操作,比涉及元表的table访问更快。通常而言,作为数组使用的t 阅读全文
-
(Lua调用C函数)
摘要:Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作为其唯一的参数,实现者可以通过该指针进一步获取Lua代码中实际传入的参数。返回值是整型,表示该C函数将返回给Lua代码的返回值数量,如果没有返回值,则return 0即可。需要说明的是,C函数无法直接 阅读全文
-
C调用Lua
摘要:1. 基础: Lua的一项重要用途就是作为一种配置语言。现在从一个简单的示例开始吧。 --这里是用Lua代码定义的窗口大小的配置信息 width = 200 height = 300 下面是读取配置信息的C/C++代码: 1 #include <stdio.h> 2 #include <string.h> 3 #include <lua.hpp> 4 #include <lauxlib.h> 5 #include <lualib.h> 6 7 void load(lua_State* L, const char* fname, int 阅读全文
-
Lua-C API简介
摘要:任何全局变量,而是将所有的状态都保存在动态结构lua_State中,后面所有的C API都需要该指针作为第一个参数。 3). luaL_openlibs函数是用于打开Lua中的所有标准库,如io库、string库等。 4). luaL_loadbuffer编译了buff中的Lua代码,如果没有错误,则返回0,同时将编译后的程序块压入虚拟栈中。 5). lua_pcall函数会将程序块从栈中弹出,并在保护模式下运行该程序块。执行成功返回0,否则将错误信息压入栈中。 6). lua_tostring函数中的-1,表示栈顶的索引值,栈底的索引值为1,以此类推。该函数将返回栈顶的错误信息,但是不会将其 阅读全文
-
Lua系统库
摘要:Lua为了保证高度的可移植性,因此,它的标准库仅仅提供了非常少的功能,特别是和OS相关的库。但是Lua还提供了一些扩展库,比如Posix库等。对于文件操作而言,该库仅提供了os.rename函数和os.remove函数。 1. 日期和时间: 在Lua中,函数time和date提供了所有的日期和时间功能。 如果不带任何参数调用time函数,它将以数字形式返回当前的日期和时间。如果以一个table作为参数,它将返回一个数字,表示该table中所描述的日期和时间。该table的有效字段如下:字段名描述year一个完整的年份month01-12day01-31hour00-23min00-59sec. 阅读全文