早前就用过LUA ,只是局部的小项目使用,突然兴起想要写1些关于LUA 的 文章,记录曾学习过的点点滴滴。
这里我使用的是LUA5.2作为 案例
lua做为轻量级脚本语言已被广泛利用到利用软件和游戏开发中,相比Perl和python lua的内核 只有100KB左右
可以很容易嵌入到语言级别 就好像语言本身的功能1样
以下来自百度全科:
Lua还具有其它1些特性:同时支持面向进程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了1种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也能够看作1个值;提供多线程(协同进程[4] ,并不是操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的1些关键机制,比如数据抽象,虚函数,继承和重载等。
关于甚么是闭包?和如何使用闭包在下面这边文章中有 javascript对应的闭包问题。相信很多前端工程师其实不陌生
闭包由于优缺点1直都是对半存在所以很多人是不建议程序中使用闭包的。
http://www.cnblogs.com/jeffwongishandsome/archive/2009/05/17/1458405.html 关于闭包的介绍
空话不多说,要使用LUA首先就要编译 LUA的内核,linux下相当简单
make
make install 就完事
windows下编译进程以下
如果你要编译静态库?
vs2010下首先创建以下 项目,记住去掉预编译头,由于lua是用C ,混合C/C++会造成预编译头冲突
创建不适用预编译头的 静态库 ,
导入lua代码到项目文件,选择你的lua代码导入 直接生成便可
如果你要编译动态库?
基本步骤同上相同 你在创建的时候创建1个dll项目 , 或 直接修改项目属性 生成dll
你现在编译是编译不过的 ?你要去掉你的预编译选项!!! 不使用项目预编译头
这个时候你编译 OK通过了 也生成了 DLL ,那末问题来了 现在 咋没有生成.lib输入库呢!!!
实际上发现LUA内核导出函数都被声明为LUA_API开头
你需要添加几个预编译定义
LUA_BUILD_AS_DLL 这个告知预处理器 代码依照DLL编译 并且定义导入导出
LUA_CORE 这个告知预处理器 LUA_API 宏添加 上 dllexport导出定义 如果不添加就是直接使用dllimport
源代码以下
1 #if defined(LUA_BUILD_AS_DLL) /* { */ 2 3 #if defined(LUA_CORE) || defined(LUA_LIB) /* { */ 4 #define LUA_API __declspec(dllexport) 5 #else /* }{ */ 6 #define LUA_API __declspec(dllimport) 7 #endif /* } */ 8 9 #else /* }{ */ 10 11 #define LUA_API extern 12 13 #endif /* } */
OK 到这里 你的LUA内核已编译完了 可以开始学习LUA了