[置顶] 轻量级语言Lua入门

时间:2021-09-21 21:25:10

作为一个脚本爱好者,而且是脚本(Perl)起家的我,一有空就喜欢学习下这些脚本语言。据说魔兽世界、愤怒小鸟都用到了它,所以今天研究下Lua这个叫法有点奇特的脚本[置顶] 轻量级语言Lua入门

【转载请注明出处:http://blog.csdn.net/longlong530

一.Lua简介

Lua 是一个小巧的脚本语言。作者是巴西人(好像还没有接触过巴西人~)。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。

Lua由标准C编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。一个完整的Lua解释器不过200k,在目前所有脚本引擎中,Lua的速度是最快的。这一切都决定了Lua是作为嵌入式脚本的最佳选择。

二.源码下载

LUA源码下载:http://www.lua.org/ftp/lua-5.2.2.tar.gz

参考手册:       http://www.ostools.net/apidocs/apidoc?api=lua

中文教程(年代有点久远了,不过语法应该差不多):http://wenku.baidu.com/view/cbe028533c1ec5da50e270ea.html

我的入门例子:http://download.csdn.net/detail/longlong530/5670567

网上还有个所谓15分钟入门的教程,也不错:http://www.oschina.net/translate/learn-lua-in-15-minutes

三.源码编译:


1.VS2010新建一个工程,导入源码src文件夹下的所有代码;

2.配置:  配置属性    -->  常规   -->   配置类型   -->  选择  “静态库(.lib)”

3.配置:  C/C++   -->  高级  -->  编译为  -->  选择“编译为C++代码(/TP)”,否则使用lua  lib库的时候会报下面的链接错误:

error LNK1120: 5 个无法解析的外部命令
error LNK2019: 无法解析的外部符号 "int __cdecl lua_pcallk(struct lua_State *,int,int,int,int,int (__cdecl*)(struct lua_State *))" (?lua_pcallk@@YAHPAUlua_State@@HHHHP6AH0@Z@Z),该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 "int __cdecl luaL_loadfilex(struct lua_State *,char const *,char const *)" (?luaL_loadfilex@@YAHPAUlua_State@@PBD1@Z),该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 "struct lua_State * __cdecl luaL_newstate(void)" (?luaL_newstate@@YAPAUlua_State@@XZ),该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 "void __cdecl lua_close(struct lua_State *)" (?lua_close@@YAXPAUlua_State@@@Z),该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 "void __cdecl luaL_openlibs(struct lua_State *)" (?luaL_openlibs@@YAXPAUlua_State@@@Z),该符号在函数 _main 中被引用

4.将lua.c中的main函数修改为lua_main,将luac.c中的main函数修改为luac_main;

5.直接编译,生成lualib.lib静态库。

四.lua静态库的使用

1.新建一个项目,引入lua的头文件和静态库

2.编写luaTest.cpp:

#include <stdio.h>
#include <stdlib.h>
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include "luaconf.h" int main(int argc, char* argv[])
{
lua_State* L = luaL_newstate();
luaL_openlibs(L);
luaL_dofile(L, "D://WorkSpace//Lua//test.lua");
lua_close(L);
system("pause");
return 0;
}

3.再编写一个test.lua脚本

function show()
local b = {}
local index for index = 1,10,2 do
print(index)
end
end show()

4.编译运行后,即可显示C++调用该lua脚本的结果:

[置顶] 轻量级语言Lua入门

[置顶] 轻量级语言Lua入门

就这样,愉快的入门Lua了,哈哈~当然Lua如此流行,必定有他更多的强人之处,后面工作中如果遇到可深入学习,语法稍微花点时间浏览下,多用用就熟悉了。

最后,上一张Log~

[置顶] 轻量级语言Lua入门

[置顶] 轻量级语言Lua入门的更多相关文章

  1. &lbrack;置顶&rsqb;&NewLine; C语言学习入门

    编译文件:cc -c one.c two.c  生成.o目标文件 链接文件:cc one.o two.o     默认生成 a.out 执行文件 指定生成的可执行文件名   cc -o one one ...

  2. &lbrack;置顶&rsqb; CSS语言精粹

    本文主要是对CSS中一些比较重要的高级部分作了一些整理,这些内容也许不是经常使用,但是都很强大.本文将长期更新. 边框 CSS2.1 规定:元素的背景是内容.内边距和边框区的背景.设置背景颜色时是没有 ...

  3. &lbrack;置顶&rsqb;&NewLine; 普通程序员如何入门AI

    毫无疑问,人工智能是目前整个互联网领域最火的行业,随着AlphaGo战胜世界围棋冠军,以及各种无人驾驶.智能家居项目的布道,人们已经意识到了AI就是下一个风口.当然,程序员是我见过对于新技术最敏感的一 ...

  4. &lbrack;置顶&rsqb;&NewLine; C语言itoa&lpar;&rpar;函数和atoi&lpar;&rpar;函数详解&lpar;整数转字符C实现&rpar;

    头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); [函数说明]ato ...

  5. &lbrack;置顶&rsqb; C语言单元测试框架

    unitest.h /****************************************************************************** * * * This ...

  6. &lbrack;置顶&rsqb; C语言中各种数据类型的长度 sizeof char&comma; short&comma; int&comma; long&comma; long long

    这些数据类型的sizeof具体长度依赖于编译器和操作系统(32-bit or 64-bit) 1: 首先,参见c99标准 标准中没有定义这些数据类型的长度,而是定义了这些数据类型能表达的大小范围的最小 ...

  7. &lbrack;置顶&rsqb;&NewLine; C语言中 &vert;&vert; 和 &&

    || 或操作,|| 为界将表达式分为两部分,他会先算前一部分,如果前一部分为真,他将停止运算,如果为假,他才会算第二部分,你这里第一部分就为真了,第二部分当然也就不会算了. 例如:  a || b , ...

  8. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  9. Swift语言高速入门

    Swift语言高速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

随机推荐

  1. C&plus;&plus; 编写 CorelDRAW CPG 插件例子(1)—WelcomeScreen

    据我所知,这是国外论坛最早的一个例子,原贴在此:http://forum.oberonplace.com/showthread.php?t=1880&highlight=Plugins 贴上主 ...

  2. 鼠标移动事件--JavaScript

    鼠标移动事件 <html> <head> <title>鼠标移动事件</title> </head> <style type=&quo ...

  3. Bootstrap风格登录界面设计样例

    参考:http://bootsnipp.com/tags/login Register Page   127.8K 187 Modal Login with jQuery Effects   159. ...

  4. 自定义Button成进度条

    ProgressButton源码: package com.example.progressbutton; import android.content.Context; import android ...

  5. win8使用putty登录虚拟机linux

    从下午两点开始在尝试,差不多用了6个小时候到现在终于成功了! 连接器使用的是putty,只要知道虚拟机的ip地址就可以尝试连接,所以首先查询虚拟机上的ip地址,使用命令: ifconfig 出现提示: ...

  6. SuperMap-iServer过滤请求返回值

    目的: iServer发布的arcgis地图服务中,由于tileinfo参数为null,导致用arcgis-ios客户端开发的APP闪退.通过过滤器将get请求的返回值修改 代码: package c ...

  7. mysql缓存分析流程

  8. &lbrack;luogu3943&rsqb; 星空

    题面 ​ 这个题目大意上是这样的:给定一个长度为n的01串, 其中只有k个0, 每次操作时, 从给定的m种长度中选择一种, 选择序列上长度为这种的进行反转操作, 求至少需要多少次操作使得整个串全变为1 ...

  9. 7&period;25 1figting!

    TEXT 97 Health consumerism 保护消费者健康权益 The wellness boom 健康产业飞速发展(陈继龙编译) Jan 4th 2007 | NEW YORK From ...

  10. HDU1232 畅通工程---&lpar;经典并查集应用&rpar;

    http://acm.hdu.edu.cn/showproblem.php?pid=1232 畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory ...