First Lua function running in C】的更多相关文章

这是我在C里面跑出来的第一个Lua 文件, 纪念一下. 1.Set up envirnonment: Mac下面 Lua的src (即include) 和lib(binary)是分开的, 所以需要分别下载. 使用的是 5.2.3 的src 和 standard lib(5.2.1_MacOS107_lib). include 和 lib 在gcc 编译的时候需要用-L 引入. 2.代码: VERY IMPORTANT: ua_open() should not be used. In lua-5…
This is the main reference for the World of Warcraft Lua Runtime. Note that these are mostly standard Lua functions, available in most Lua environments. Arguably, we could just refer to the Lua web site, but a few functions differ slightly in Blizzar…
Lua支持面向对象,操作符为冒号‘:’.o:foo(x) <==> o.foo(o, x). Lua程序可以调用C语言或者Lua实现的函数.Lua基础库中的所有函数都是用C实现的.但这些细节对于lua程序员是透明的.调用一个用C实现的函数,和调用一个用Lua实现的函数,二者没有任何区别. 函数的参数跟局部变量一样,用传入的实参来初始化,多余的实参被丢弃,多余的形参初始化为nil. count= function incCount(n) n=n count=count+n end incCoun…
Just a simple example: --The  c file: #include <stdio.h> #include "lua.h" #include "luaconf.h" #include "lualib.h" #include "lauxlib.h" #include "math.h" static int l_sin (lua_State *L) { double d =…
#include "lua.hpp" #include <iostream> using namespace std; #pragma comment(lib, "lua5.1.lib") struct lua_guard{ lua_State *pL; lua_guard(lua_State *s) :pL(s){} ~lua_guard(){ lua_close(pL); } }; int main(){ lua_guard g(lua_open()…
什么是环境? http://www.lua.org/manual/5.1/manual.html#2.9 Besides metatables, objects of types thread, function, and userdata have another table associated with them, called their environment. Like metatables, environments are regular tables and multiple…
Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingnow.com Copyright © 2006 Lua.org, PUC-Rio. All rights reserved. 1 - 介绍 Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施. Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持.…
转载自:http://magicpanda.net/2010/10/lua%E6%9E%B6%E6%9E%84%E6%96%87%E6%A1%A3/ Lua架构文档(翻译) 十 102010 前段时间翻译了lua官方关于lua5架构设计的一份文档,现在分享给大家. 注意:所有版权都归lua官方所有,本人仅将其翻译为中文,以方便中文阅读者.翻译中出现任何错误导致的结果,本人不负任何责任. 如果有任何翻译错误,以及意见与建议,请email本人.邮件地址:ice_ok@163.com. 转载请注明原作…
-------------------------------------------------------------------------------- -- 不携带参数 -------------------------------------------------------------------------------- local main = function() print("step1") coroutine.yield() print("step2…
Introduction From a running C program, you can call a Lua script. The C program can pass arguments to the Lua script, and the Lua script can pass back a return. The Lua script can serve to initialize the C program, or the Lua script can install a cal…
LuaJ I was reading over the list of features that CurioDB lacks compared to Redis , that I’d previously documented. It contained the item “no Lua scripting”, which I’d written confidently at the time, certain that I wouldn’t possibly be able to imple…
废话在前 什么是代码覆盖率 来自百度百科 代码覆盖(Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率. 开发人员为何关注? 在我们的开发过程中,经常要用各种方式进行自测,或是各种 xUnit 系列,或是 postman,或是直接curl,在我们的代码交给 QA 同学之前,我们有必要知道自己的自测验过了多少内容,在这种情况,代码覆盖率就是一个重要的衡量指标. openresty 中的代码覆率解决方案 我们如果想得到每一次执行的代码覆率,…
--some functions dofile("functions.lua") lighton1= lighton2= lighton3= lighton4= pin1 = pin2 = pin3 = pin4 = gpio.mode(pin1,gpio.OUTPUT) gpio.mode(pin2,gpio.OUTPUT) gpio.mode(pin3,gpio.OUTPUT) gpio.mode(pin4,gpio.OUTPUT) --pin1 tmr.alarm(,,,func…
本文转自:http://www.cnblogs.com/zxh1210603696/p/4458473.html #include "lua.hpp" #include <iostream> using namespace std; #pragma comment(lib, "lua5.1.lib") struct lua_guard{ lua_State *pL; lua_guard(lua_State *s) :pL(s){} ~lua_guard(…
[LuaSrcDiet] (5.0.2) - 通过删除不必要的空白和注释缩减Lua文件的大小. [LuaProfiler] (5.0) - 一个用来查找Lua应用瓶颈的工具time profiler . [LuaCov] - LuaCov 是一个用来对 Lua 脚本进行覆盖率分析的工具.当运行 Lua 脚本时加载了 luacov 模块,那么将会生成一个统计文件,包含每一行脚本和响应模块加载的执行情况. [B:Lua] - 开源项目: 具备各种特征的Lua IDE. [LunaticPython]…
Programming in LuaCopyright ® 2005, Translation Team, www.luachina.net Programming in LuaProgramming in Lua作者:Roberto Ierusalimschy翻译:www.luachina.netSimple is beautifulCopyright ® 2005, Translation Team, www.luachina.net Programming in Luai版权声明 <Pro…
1. CentOS系统安装openresty 你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum update 命令).运行下面的命令就可以添加我们的仓库: $ sudo yum install yum-utils $ sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo 然后就可以像下面这样安装软件包,比如…
前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a", "b" foo = a 生成的字节码如下所示: 之前lua是在luaY_parser函数(入口)中完成了lua脚本的解析生成字节码的整个过程的,在生成了main func(过程见“lua解析赋值类型代码的过程“)后luaY_parser会返回一个Proto结构体指针tf,Pr…
1.介绍 使用脚本开发游戏业务逻辑其中一个好处就是代码可线上热更,不停机修复bug.而热更代码的写法与需要被热更的文件的代码又有着密切的关系,本文介绍一种热更方法. 2.热更原理 Lua提供一个叫require的函数,实现文件的加载,require的作用可查看云风大大的参考手册说明  http://cloudwu.github.io/lua53doc/manual.html#pdf-require要热更一个已经被加载(require)过的模块,要做两件事件. 1. 将package.loaded…
lua的优点: 可移植性 容易嵌入 体积小 高效率 这些优点都来自于lua的设计目标:简洁.从Scheme获得了很多灵感,包括匿名函数,合理的语义域概念   lua前身: 巴西被禁运,引入计算机软件和硬件受限,巴西人有强烈的民族情绪去创造自己的软件.三名作者都是同一个实验室Tecgraf的,这个实验室与很多工业实体有合作关系.成立的头十年,重点是创造交互性的图形软件,帮助合作伙伴进行设计.巴西石油公司是其中一个重要伙伴.有大量的遗留数据需要处理.于是诞生了DEL,一个领域专用语言,主要用来描述数…
用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编译源码,我们需要编译: 一个静态库 一个动态库 一个lua语言解释器 一个lua编译器 建立一个工静态库工程 打开VC-->文件-->(点击)新建--(弹出框中选择)工程-->(win32 static library) 创一个空的工程 工程名为luaLib 把lua中所有的源码添加,去掉其…
Lua 与 C 的交互 Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库. C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1.  读写Lua全局变量的函数: 2.  调用Lua函数的函数: 3.  运行Lua代码片段的函数: 4.  注册C函数后可以在Lua中被调用的函数: 在C和LUA之间交互的关键在于一个虚拟栈(virtual stack),数据交互通过栈进行.操作数据时,首先将数据拷贝到栈上,然后获取数据,栈中的每个数据…
Lua简介 Lua是一种简单.可拓展.可移植及高效的脚本语言. 开始 Lua之间不需要分隔符 运行方式: Linux下: lua -i prog dofile("lib1.lua") 函数定义: function func() return 123; end 词法规范 标识符可以以任意字母.数字.下划线构成,但是不能以数字开头,避免下划线后面跟一个或多个大写字母,这类字符被Lua保留作为特殊用途.保留字有:and.break.do.else.elseif.end.false.for.f…
最近对Lua很感兴趣,以下是本阶段学习的总结,包含三部分,一部分是基础语法,一部分是扩展和解释器嵌入,最后一部分是Lua小练习. 知识涉及:Lua语言编程基础:Lua&C++:Lua扩展.嵌入Lua解释器.裸写C++扩展.借助swig写C++扩展.平台:Linux.gcc4.8.2 一.基础语法 1.print("Hello World") Lua中不需要分号,也不需要python那样的严格格式: 单引号跟双引号等价,多行文本使用两个中括号扩起来:[[multi line]]:…
{--1.环境--} 为了快速入手,使用了小巧快速的vc++6.0编译器 以及在官网下载了Lua安装包..官网地址{--http://10.21.210.18/seeyon/index.jsp--} 两者都安装好后,即可进行 {--2.工程以及配置--} 1.首先用vc++6.0创建一个简单的win32 console application 2.从Lua的安装目录下复制include和lib两个目录下的文件到刚刚创建的工程的目录下. {include:包含了lua的.h头文件} {lib:包含…
//test.c #include <stdio.h> #include "lua.h" #include "lualib.h" #include "lauxlib.h" #include <stdlib.h> lua_State *L; int main(){ L = luaL_newstate();//创建state以及加载标准库 luaL_openlibs(L);//打开所有lua标准库加入到已经创建的state l…
Lua利用一个虚拟的堆栈来给C传递值或从C获取值.每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回值压入这个栈(Lua从中拿到C函数调用结果). 于此相关的C API有几个比较重要的定义如下: (1)typedef struct lua_State lua_State; lua虚拟机(或叫解释器),可以理解为一个thread,和一个完整的Lua虚拟环境的执行状态. (2)typedef int…
1.functions.lua (framework->functions.lua) 提供一组常用函数,以及对 Lua 标准库的扩展 1.printf 2.checknumber checkint checkbool checktable isset3.深度克隆一个值 clone 4.创建一个类 class 5.载入一个模块 import() 与 require() 功能相同,但具有一定程度的自动化特性 6.将 Lua 对象及其方法包装为一个匿名函数  在 quick-cocos2d-x 中,许…
原帖:http://blog.csdn.net/soloist/article/details/329381 并发是现实世界的本质特征,而聪明的计算机科学家用来模拟并发的技术手段便是多任务机制.大致上有这么两种多任务技术,一种是抢占式多任务(preemptive multitasking),它让操作系统来决定何时执行哪个任务.另外一种就是协作式多任务(cooperative multitasking),它把决定权交给任务,让它们在自己认为合适的时候自愿放弃执行.这两种多任务方式各有优缺点,前者固…
实现原理: 通过将LUA中得回调函数存入LUA注册表中来保存LUA函数,然后在需要回调时从LUA注册表中取出LUA函数进行调用 下面是一些预备知识:(学习两个重要的函数) 原汁原味的英文解释的最透彻,翻译的话就会加入自己的理解 LUA_GLOBALSINDEX LUA_ENVIRONINDEX LUA_REGISTRYINDEX Lua provides a registry, a pre-defined table that can be used by any C code to store…