在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
作为一个脚本爱好者,而且是脚本(Perl)起家的我,一有空就喜欢学习下这些脚本语言。据说魔兽世界、愤怒小鸟都用到了它,所以今天研究下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 中被引用
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; }
function show() local b = {} local index for index = 1,10,2 do print(index) end end show()
就这样,愉快的入门Lua了,哈哈~当然Lua如此流行,必定有他更多的强人之处,后面工作中如果遇到可深入学习,语法稍微花点时间浏览下,多用用就熟悉了。 最后,上一张Log~
|
请发表评论