博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[置顶] 轻量级语言Lua入门
阅读量:6686 次
发布时间:2019-06-25

本文共 2110 字,大约阅读时间需要 7 分钟。

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

【转载请注明出处:】

一.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

参考手册:       

中文教程(年代有点久远了,不过语法应该差不多):

我的入门例子:

网上还有个所谓15分钟入门的教程,也不错:

三.源码编译:

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 
#include
#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如此流行,必定有他更多的强人之处,后面工作中如果遇到可深入学习,语法稍微花点时间浏览下,多用用就熟悉了。

最后,上一张Log~

 

你可能感兴趣的文章
生活中的巧思与发现笔记——读书笔记
查看>>
设计模式之二十一:中介者模式(Mediator)
查看>>
javascript go()函数
查看>>
UML类图与类的关系详解
查看>>
C#结构函数
查看>>
springmvc+spring+mybatis+maven项目构建
查看>>
Android菜鸟的成长笔记(28)——Google官方对Andoird 2.x提供的ActionBar支持
查看>>
C# params关键字
查看>>
[Angular] Router outlet events
查看>>
OpenCV 玩九宫格数独(二):knn 数字识别
查看>>
hdu 1233 还是畅通project(kruskal求最小生成树)
查看>>
cocos2dx3.0 2048多功能版
查看>>
系统垃圾清理利器CCleaner v5.30.6063绿色单文件版(增强版)
查看>>
自然语言交流系统 phxnet团队 创新实训 个人博客 (六)
查看>>
Intellij Idea debug 模式如果发现异常,即添加异常断点在发生异常处
查看>>
程序员的多线程的生活
查看>>
leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
查看>>
免费云盘,为什么不用?
查看>>
java后台json如何传递到jsp中解析
查看>>
Dubbo -- 系统学习 笔记 -- 配置参考手册
查看>>