lua lib 的编译

作为一个脚本爱好者,而且是脚本(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库的时候会报下面的链接错误:

[plain]  view plain copy
  1. error LNK1120: 5 个无法解析的外部命令  
  2. 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 中被引用  
  3. error LNK2019: 无法解析的外部符号 "int __cdecl luaL_loadfilex(struct lua_State *,char const *,char const *)" (?luaL_loadfilex@@YAHPAUlua_State@@PBD1@Z),该符号在函数 _main 中被引用  
  4. error LNK2019: 无法解析的外部符号 "struct lua_State * __cdecl luaL_newstate(void)" (?luaL_newstate@@YAPAUlua_State@@XZ),该符号在函数 _main 中被引用      
  5. error LNK2019: 无法解析的外部符号 "void __cdecl lua_close(struct lua_State *)" (?lua_close@@YAXPAUlua_State@@@Z),该符号在函数 _main 中被引用     
  6. 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:

[cpp]  view plain copy
  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include "lua.h"  
  4. #include "lualib.h"  
  5. #include "lauxlib.h"  
  6. #include "luaconf.h"  
  7.   
  8. int main(int argc, char* argv[])  
  9. {  
  10.     lua_State* L = luaL_newstate();  
  11.     luaL_openlibs(L);  
  12.     luaL_dofile(L, "D://WorkSpace//Lua//test.lua");  
  13.     lua_close(L);  
  14.     system("pause");  
  15.     return 0;  
  16. }  


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

[plain]  view plain copy
  1. function show()    
  2.     local b = {}    
  3.     local index    
  4.         
  5.     for index = 1,10,2 do    
  6.         print(index)    
  7.     end    
  8. end    
  9.     
  10. show()  


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



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

最后,上一张Log~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值