1. 去http://www.lua.org/download.html获取最新的lua版本。我下载的是5.2.0版本。
2. 新建一个VS2008的空控制台工程Lua,然后关闭工程。打开工程文件夹,把*.ncb *.sln *.suo文件删除。新建一个名为VS2008的文件夹,将同级目录下的lua文件夹移动到VS2008目录下。新建一个与VS2008同级的LuaSrc文件夹,将解压出来的lua源文件拷贝到该目录下。
3. 打开VS2008下Lua目录下的Lua.vcproj工程文件,将Lua.sln解决方案文件保存到VS2008目录下。
4. 在Lua解决方案下再新建一个Core的静态库工程、一个Standard的静态库工程、一个LuaC的空的控制台工程。注意要把生成的工程的目录设置为和Lua工程同级。
5. 向Core工程添加如下文件:
lapi.c lapi.h lcode.c lcode.h lctype.c lctype.h ldebug.c ldebug.h ldo.c ldo.h ldump.c lfunc.c lfunc.h lgc.c lgc.h llex.c llex.h llimits.h lmem.c lmem.h lobject.c lobject.h lopcodes.c lopcodes.h lparser.c lparser.h lstate.c lstate.h lstring.c lstring.h ltable.c ltable.h ltm.c ltm.h lua.h luaconf.h lundump.c lundump.h lvm.c lvm.h lzio.c lzio.h
6. 向Standard工程加入以下文件:
lauxlib.c lauxlib.h lbaselib.c lbitlib.c lcorolib.c ldblib.c linit.c liolib.c lmathlib.c loadlib.c loslib.c lstrlib.c ltablib.c lua.h luaconf.h lualib.h
7. 向Lua工程添加以下文件:
lauxlib.h Lua.c lua.h luaconf.h lualib.h
8. 向LuaC工程添加以下文件:
lauxlib.h ldebug.h llimits.h lmem.h lobject.h lopcodes.h lstate.h ltm.h lua.h Luac.c luaconf.h lundump.h lzio.h
9. 修改Core、Standard工程的输出目录为
DEBUG:$(OutDir)\..\..\Bin\VS2008\Debug\$(ProjectName).lib
RELEASE:$(OutDir)\..\..\Bin\VS2008\Release\$(ProjectName).lib
修改Lua、LuaC工程的输出目录为
DEBUG: $(OutDir)\..\..\Bin\VS2008\Debug\$(ProjectName).exe
RELEASE:$(OutDir)\..\..\Bin\VS2008\Release\$(ProjectName).exe
10. 向Lua、LuaC工程中添加静态库依赖
DEBUG: ..\..\Bin\VS2008\Debug\Core.lib
..\..\Bin\VS2008\Debug\Standard.lib
RELEASE: ..\..\Bin\VS2008\Release\Core.lib
..\..\Bin\VS2008\Release\Standard.lib
11. 设置一下工程依赖,Lua、LuaC==>>Core&Standard,重新编译工程。
12. 另外如果需要使用module等函数,还需要在工程中加入预编译宏LUA_COMPAT_ALL。如果嫌一个个的添加太麻烦,可以在luaconf.h文件的开始定义
#defineLUA_COMPAT_ALL
13. 新建两个lua文件testP.lua和mypack.lua:
--testP.lua:
pack = require "mypack" --导入包
print(ver or "No ver defined!")
print(pack.ver)
print(aFunInMyPack or "No aFunInMyPack defined!")
pack.aFunInMyPack()
print(aFuncFromMyPack or "No aFuncFromMyPack defined!")
aFuncFromMyPack()
--mypack.lua:
module(..., package.seeall) --定义包
ver = "0.1 alpha"
function aFunInMyPack()
print("Hello!")
end
_G.aFuncFromMyPack = aFunInMyPack
14. 将生成的lua.exe和luac.exe拷贝到和lua文件一起。
15. 打开VS2008的命令行工具,注意一定要是VS2008的而不是系统的cmd.exe。设置lua文件目录为当前目录。执行”Lua.exe testP.lua”命令。如果看到输出为:
No ver defined!
0.1 alpha
No aFunInMyPack defined!
Hello!
function: 00387EA8
Hello!
那么恭喜你,成功了!