使用VS2008编译lua

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文件的开始定义

#define LUA_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!

         那么恭喜你,成功了!

原文地址:

http://blog.163.com/lvan100@yeah/blog/static/68117214201249113216137/

原文地址:https://www.cnblogs.com/byfei/p/3112157.html