自己编译lua源码

对于一个开源工程,开始学习它的第一步自然是编译工程。

使用vc编译lua,在网上已有许多介绍,但“纸上得来终觉浅”,自己走一遍还是有必要的。

步骤如下:

1.下载源代码,从lua.org下载最新源代码包lua-5.2.2,解压到本地

2.打开vc建立一个solution,就叫lua.sln

3.创建一个名为liblua的project(lua库),添加除lua.c和luac.c以外的所有代码文件,将lua库编译为dll(这里注意,需要在预处理器中添加LUA_BUILD_AS_DLL和LUA_CORE两个宏)

4.创建一个名为lua的project(lua解释器),添加除luac.c以外的所有代码文件

5.创建一个名为luac的project(lua编译器),添加除lua.c以外的所有代码文件

6.编译、链接即可。注意lua和luac两个工程没有依赖liblua动态库,而是直接使用的源代码,这是因为luac里用到的一些API缺省情况下是不被liblua导出的,需要改些设置,所以直接用源代码省事了。

生成结果:

  lua库:liblua.dll、liblua.lib

  lua解释器:lua.exe:

  lua编译器:luac.exe

完成了编译,下一步当然是顺便运行个Hello World玩玩:

1.打开记事本,输入如下一行代码:

print("Hello World!")

保存成hello.lua

2.启动命令行,进入lua.exe所在目录,运行命令行:

>lua hello.lua

显示输出:Hello World!

 

=========================================================================

 

    与 平台无关。Lua几乎可以运行在所有我们听说过的系统上,如NextStep、OS/2、PlayStation II (Sony)、Mac OS-9、OS X、BeOS、MS-DOS、IBM mainframes、EPOC、PalmOS、MCF5206eLITE Evaluation Board、RISC OS,及所有的Windows和Unix。Lua不是通过使用条件编译实现平台无关,而是完全使用ANSI (ISO) C,这意味着只要你有ANSI C编译器你就可以编译并使用Lua。

 

    要在C++中使用Lua非常简单,不管是GCC,VC还是C++Builder, 最简单的方法就是把Lua源码中除lua.cluac.cprint.c以外的所有c文件与你的代码一起编译链接(或加入到工程中)即可。

 

    因为Lua是用C语言写的,除非编译lua库时指定编译器强制以C++方式编译,否则在C++工程中应该这样包含lua头文件:

extern "C" {

#include "lua.h"

#include "lualib.h"

#include "lauxlib.h"

}

 

======================================================================

 

lua 5.2.3 VS2012编译方法

准备:

  1. 新建一个空解决方案
  2. 打开解决方案目录,新建文件夹“include”和“src”
  3. 复制源码中所有.h文件到include目录,所有.c文件到src目录
  4. 删除src目录下的lua.c、luac.c

编译dll:

  1. 新建一个win32 dll的空项目
  2. 修改包含目录,在其中添加include目录
  3. 把src目录下的所有文件全部加入项目
  4. 添加define:LUA_BUILD_AS_DLL、_CRT_SECURE_NO_WARNINGS
  5. 可选:修改属性→C/C++→代码生成→运行库,为多线程,不依赖VC运行库dll
  6. 可选:新建一个资源文件,设置dll的版本信息

编译静态库:

  1. 新建一个win32 静态库的空项目
  2. 修改包含目录,在其中添加include目录
  3. 把src目录下的所有文件全部加入项目
  4. 添加define:_CRT_SECURE_NO_WARNINGS

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值