Lua5集成指南(2)

第二章从编译开始


首先拿到Lua 5.1.2的源代码,解压缩到C:/Src.不要和我说你的C盘没有空间了;)

这样,在SRC/lua-5.1.2/下面就会出现Lua的源码了。

接下来,我们以右键->编辑打开etc/luavs.bat,这是Lua提供的在VS2003下面编译自身的批处理文件.我们的目标是根据此文件,制作VS2003的工程.

首先,让我们看看这个文件的内容:

cl /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DLUA_BUILD_AS_DLL l*.c

del lua.obj luac.obj

link /DLL /out:lua51.dll l*.obj

cl /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DLUA_BUILD_AS_DLL lua.c

link /out:lua.exe lua.obj lua51.lib

cl /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE l*.c print.c

del lua.obj linit.obj lbaselib.obj ldblib.obj liolib.obj lmathlib.obj loslib.obj ltablib.obj lstrlib.obj loadlib.obj

link /out:luac.exe *.obj

del *.obj

cd ..



第一行和第二行实际上是把所有的l开头的.c文件编译成了.obj并把lua.cluac.c编译出来的obj删除.

第三行把生成的obj链接成lua51.dll

据此,我们可以制作LuaDLL工程了.

首先打开VS2003,新建一个Windows命令行工程Lua51,记得选择是空的工程,工程就放在lua-5.1.2/vc7下面.

添加除了 lua.c luac.c print.c以为所有的文件到工程的源文件

接下来,修改新生成的工程的属性:

  1. 生成 Dll

  2. 输出目录 ../../bin

  3. 运行时库 修改为 /MDd 多线程调试 Dll

  4. 修改高级里面的”编译为”=>编译为C代码 /TC

  5. 把第一行中三个 /D开头的编译选项添加到 命令行->附加选项里面

  6. 修改 连接器选项 输出文件名 $(OutDir)/lua51.dll

  7. 确定,生成项目.

应该可以在 bin 目录下面找到 lua51.dll lua51.lib

至此,我们编译出了嵌入 lua所需要的所有文件.

下面,我们来实验一下,编译出来的文件可不可以使用.

再新建一个一样的工程,名字就叫 lua.

下面是详细步骤:

  1. 添加 lua.clua.h到工程的源文件夹

  2. 输出目录 ../../bin

  3. 运行时库 修改为 /MDd 多线程调试 Dll

  4. 修改高级里面的”编译为”=>编译为C代码 /TC

  5. 把第四行中三个 /D开头的编译选项添加到 命令行->附加选项里面

  6. 修改 连接器选项 输出文件名 $(OutDir)/lua.exe

  7. 确定

  8. 修改整个解决方案的属性,把启动项设置成lua,在依赖关系中配置 lua依赖于lua51项目.

  9. 生成lua项目



按下F5 ,如果一切顺利,应该能够看到 Lua的解析器已经以Debug方式启动了.

至此,我们验证了lua51.dll是可以正常工作的.

接下来,还有一个工程,就是 luac.这是一个把lua脚本文件编译成lua字节码的工具.

我们可以按照一下的步骤生成一个luac的工程:

  1. 新建一个luac的空项目

  2. 添加除了lua.c意外所有的源文件到项目的源文件夹

  3. 输出目录 ../../bin

  4. 运行时库 修改为 /MDd 多线程调试 Dll

  5. 修改高级里面的”编译为”=>编译为C代码 /TC

  6. /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE 编译选项添加到 命令行->附加选项里面

  7. 修改 连接器选项 输出文件名 $(OutDir)/luac.exe

  8. 确定

  9. 生成luac项目

检查:以命令行抵达bin目录,执行 luac,如果看到 Usage 就是编译成功了.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值