Lua 5.3 Lua 5.3 于2015年1月12日发行。 其主要新功能包括 整数, 按位算子, 一个基础的UTF-8库, 并支持64位和32位平台。
最后一个版本是Lua 5.3.6, 于2020年9月25日发行。 Lua 5.3将不再发布。
环境:Visual Studio,已安装 x86生成工具
1.源码准备
1.下载官方源码 lua‑5.3.6.tar.gz,官网获取,不要修改源码文件
2.解压到纯英文路径,例:D:\lua536
源码目录内部文件列表:src文件夹、doc、Makefile等
2.VS新建空项目
1.新建 → 空项目(Visual C++),项目名lua53,解决方案名lua53_sln
2.解决方案平台:顶部下拉 → x86(重点,不要x64;没有x86就去VS安装器添加“桌面开发使用C++”组件,勾选x86工具)
3.配置选:Release
3.添加源文件
项目右键 → 添加现有项,把D:\lua536\src\下这些.c全部加入项目:
lapi.c lcode.c lctype.c ldebug.c ldo.c ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lparser.c lstate.c lstring.c ltable.c ltm.c lundump.c lvm.c lzio.c lauxlib.c lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c lmathlib.c loslib.c lstrlib.c ltablib.c lutf8lib.c loadlib.c linit.c
❗lua.c、luac.c 不要加入到此dll项目
4.项目属性(Release|x86,必须确认窗口顶部是Release+x86)
项目右键 → 属性
4‑1 C/C++ → 常规
附加包含目录:D:\lua536\src
4‑2 C/C++ → 预处理器 → 预处理器定义
填入:
LUA_BUILD_AS_DLL;_CRT_SECURE_NO_WARNINGS
4‑3 C/C++ → 代码生成
运行库:多线程DLL (/MD)
4‑4 链接器 → 常规
输出文件:$(OutDir)lua53.dll
4‑5 链接器 → 系统
子系统:Windows (/SUBSYSTEM:WINDOWS)
4‑6 链接器 → 高级
目标计算机:MachineX86 (/MACHINE:X86)
4‑7 项目属性 → 常规
配置类型:动态库(.dll)
保存全部属性。
5.编译DLL
1.删除旧输出目录(x86\Release整个文件夹删掉)
2.生成 → 重新生成解决方案
输出产物:x86\Release\lua53.dll、lua53.lib
6.编译lua.exe解释器(单独新建项目)
同解决方案下,新建另一个空项目,名字lua_exe
配置:Release|x86
1.添加现有项:上面全部.c源码 再加 lua.c,luac.c依旧不要加
2.属性:
- C/C++预处理器:
_CRT_SECURE_NO_WARNINGS(不要写LUA_BUILD_AS_DLL) - 配置类型:应用程序(.exe)
- 运行库:
/MD - 链接器→高级:
/MACHINE:X863.重新生成,得到lua_exe\x86\Release\lua53.exe
7.校验(使用x86 Native Tools Command Prompt for VS)
cd到输出目录
dumpbin /HEADERS lua53.dll
必须看到:14C machine (x86)
dumpbin /EXPORTS lua53.dll
输出列表要有大量 lua_、luaL_ 导出函数。
lua53.exe -v
输出Lua 5.3.6即全部编译成功。
关键点汇总 1.全程平台锁定x86 Release 2.dll项目定义
LUA_BUILD_AS_DLL;exe项目不能带这个宏 3.dll不要加lua.c;exe项目才加lua.c 4.运行库统一/MD,不要用MT 5.必须用x86工具链dumpbin校验机器码与导出表。
=============##补全属性===================
当前配置:Release | Win32(就是x86 32位,平台是对的),配置类型:动态库(.dll) ✔
接下来逐项补全属性
-
C/C++ → 常规 附加包含目录:
D:\lua536\src(改成你实际的lua src路径) -
C/C++ → 预处理器 → 预处理器定义
LUA_BUILD_AS_DLL;_CRT_SECURE_NO_WARNINGS -
C/C++ → 代码生成 运行库:多线程DLL (/MD)
-
链接器 → 高级 目标计算机:
MachineX86 (/MACHINE:X86) -
链接器 → 系统 子系统:
Windows (/SUBSYSTEM:WINDOWS)
点击应用保存。
确认源码列表
dll项目src下加入全部c文件,排除 lua.c、luac.c。
编译前强制清理
1.关闭属性页;
2.在解决方案资源管理器,项目右键 →【清理】;
3.手动删除整个输出文件夹(Release目录全部删掉,不要留旧obj/dll);
4.项目右键 →【重新生成】。
编译完成后校验(x86 VS命令提示符)
dumpbin /HEADERS lua536.dll
必须看到 14C machine (x86)
dumpbin /EXPORTS lua536.dll
出现大量 lua_、luaL_ 导出函数才算成功。
注意:项目名是 lua536,输出dll名字就是 lua536.dll