对于一个开源工程,开始学习它的第一步自然是编译工程。
使用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.c,luac.c和print.c以外的所有c文件与你的代码一起编译链接(或加入到工程中)即可。
因为Lua是用C语言写的,除非编译lua库时指定编译器强制以C++方式编译,否则在C++工程中应该这样包含lua头文件:
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
======================================================================
lua 5.2.3 VS2012编译方法
准备:
- 新建一个空解决方案
- 打开解决方案目录,新建文件夹“include”和“src”
- 复制源码中所有.h文件到include目录,所有.c文件到src目录
- 删除src目录下的lua.c、luac.c
编译dll:
- 新建一个win32 dll的空项目
- 修改包含目录,在其中添加include目录
- 把src目录下的所有文件全部加入项目
- 添加define:LUA_BUILD_AS_DLL、_CRT_SECURE_NO_WARNINGS
- 可选:修改属性→C/C++→代码生成→运行库,为多线程,不依赖VC运行库dll
- 可选:新建一个资源文件,设置dll的版本信息
编译静态库:
- 新建一个win32 静态库的空项目
- 修改包含目录,在其中添加include目录
- 把src目录下的所有文件全部加入项目
- 添加define:_CRT_SECURE_NO_WARNINGS
lua编译器和lua解释器有什么区别,都是用来干什么的?
lua编译器把lua脚本编译成lua虚拟机的指令。(bytecode)
lua解释器除了有编译器外还有虚拟机,可以执行编译后的指令。