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

本文共 2163 字,大约阅读时间需要 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~

 

转载于:https://www.cnblogs.com/dyllove98/p/3162930.html

你可能感兴趣的文章
Intelligence System
查看>>
C#数据之DataTable
查看>>
群硕又打电话给我了
查看>>
request模块
查看>>
struts2视频学习笔记 29-30(Struts 2常用标签,防止表单重复提交)
查看>>
Android 启动APP黑屏解决方案
查看>>
《数据结构》C++代码 Splay
查看>>
搭建samba服务,实现局域网文件共享
查看>>
数组求和方法汇总
查看>>
linux/centos elasticsearch 环境搭建 安装 运行 使用
查看>>
042_提示用户输入年份后测试判断是否为闰年
查看>>
Vue探索历程(一)
查看>>
struts2 jar包详解
查看>>
数据结构实验:连通分量个数 分类: 图论 20...
查看>>
Minimum Inversion Number
查看>>
s7day2
查看>>
[LeetCode] 146. LRU Cache_Hard tag: Hash, Linked List
查看>>
【CSON原创】javascript椭圆旋转相册发布
查看>>
nginx的安装 傻瓜式
查看>>
MySQL 5.7开启二进制日志注意事项
查看>>