国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > 框架设计 > 在windows C++中编译并使用Lua脚本1

在windows C++中编译并使用Lua脚本1

来源:程序员人生   发布时间:2015-01-16 08:52:25 阅读次数:4143次

早前就用过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了


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生