LUA编译

来源:互联网 发布:美国种族矛盾 知乎 编辑:程序博客网 时间:2024/05/17 08:02

LUA编译

一.源码准备:

1)      请上lua的网站下载lua-5.1.4.tar.gz  网址http://www.lua.org/download.htmlg

2)      解压lua-5.1.4.tar到目录下有Src目录为代码目录.

二.目录说明:

       解压后相关目录说明如下:

   1)   etc    编译时用的一些文件,以及一些头文件和说明 luavs.bat也放在这儿

   2)   Src    LUA的代码所放置的位置

   3)   test    一些测试用的.lua文件

三. luavs.bat在VS2008上的使用

   Luavs.bat的使用目的是不要让我们自己去建立工程就可以生成对应的lua51.dll与lua51.lib方便开发人员直接上使用lua库,而本文的目的是想重新编译一个自己的dll库但还是必须先介绍一下使用luavs.bat来生成LUA动态库的方法:

  

   打开”程序”->MVS2008->VST->Visual Studio 2008命令提示

   可以打开VS2008自带的cmd工具,在这里才能运行luavs.bat

   Luavs.bat要拷贝到lua的主目录下(etc的上级)

不要放在etc中运行一会分析的时候知道

   运行luavs.bat后在src中会生成lua51.dll lua51.lib lua.exe luac.exe四个文件

   Lua51.dll lua的动态库

   Lua51.lib 编译时使用

   Lua.exe lua解释器

   Luac.exe 天啦我也不太了解不明白

   如果只想得到四个文件的编程人员看到这就可以啦~(如何使用库可以往下看)

四. luavs.bat的分析(目的是建立lua项目工程)

让我们分析一下luavs.bat的内容吧代码如下: “//”为我的注释不

@setlocal

@set MYCOMPILE=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE

@set MYLINK=link /nologo

@set MYMT=mt /nologo

 

 

///////////////////动态库的生成

cd src                                        //进入SRC目录

%MYCOMPILE% /DLUA_BUILD_AS_DLL l*.c   //编译啦定义了两个宏

del lua.obj luac.obj                    //删除lua.c 与 luac.c相关的obj

%MYLINK% /DLL /out:lua51.dll l*.obj                    //输出lua51.dll的动态库

if exist lua51.dll.manifest^

  %MYMT% -manifest lua51.dll.manifest -outputresource:lua51.dll;2

 

/////////////////////////编译lua.exe

%MYCOMPILE% /DLUA_BUILD_AS_DLL lua.c

%MYLINK% /out:lua.exe lua.obj lua51.lib  //编译lua.c通过状态连接生成lua.exe

if exist lua.exe.manifest^

  %MYMT% -manifest lua.exe.manifest -outputresource:lua.exe

 

/////////////////////////编译luac.exe

%MYCOMPILE% 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

%MYLINK% /out:luac.exe *.obj

if exist luac.exe.manifest^

  %MYMT% -manifest luac.exe.manifest -outputresource:luac.exe

del *.obj *.manifest                                                 //清空所有编译时的上间文件

cd ..

 

       .bat的一些编译参数说明如下:

请参考这些内容分析以上要设置的宏以及VS2008中要能需要设置的参数

@set MYCOMPILE=cl /nologo /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE

/CL编译

/MD并不提示版本 选择多线程、DLL版本的C   Run-Time库

//O2:优化使产生的可执行代码速度最快

/W:设置警告等级

/C:在预处理输出中保留注释语句

/D:定义常量和宏,与源程序里的#define   有相同效果 

/_CRT_SECURE_NO_DEPRECATE 主要是不让fopen等函数不提示warning

@set MYLINK=link /nologo

/link:将指定的选项传给连接器

@set MYMT=mt /nologo

/MT:选择多线程版本的C   Run-Time库

 

 

总结:由以上的.bat观察可以得出以下几个重要的线索

1.       在VS2008中要设置LUA_BUILD_AS_DLL和_CRT_SECURE_NO_DEPRECATE的宏通过luaconfig.h中可得知这是导出库时使用的

2.       动态库中不用包含lua.c 与luac.c两个文件

3.       是多线程C版本的动态库

4.       不使用预编译头文件

 

 

五.建立VS2008 LUA工程

1.建立工程在VS2008中”文件”->”新建”->项目…”名为LUADLL

2.选择win32中的win32工程

3.下一步后勾选DLL

5.       加入LUA_BUILD_AD_DLL和_CRT_SECURE_NO_DEPRECATE宏到工程

左击工程选择属性

在预处理器中加入LUA_BUILD_AS_DLL(从luavs.bat中分析得到的)

为什么加这个宏大家看看luaconfig.h文件就知道为什么~?

6.       使用C编译

在c/c++中的高级中选择编译为:编译为C代码(/TC)

 

 

 

7.       不使用编译头

8.       设置完了就把.c和.h文件加入工程中,不要把lua.c luac.c print.c放到目录中

9.       编译后会在Debug目录下生成dll和lib文件

 

六.编译lua.exe文件(Lua解析器)

从新建立一个win32控制台应用程序工程, 建立工程在VS2008中”文件”->”新建”->项目…”名为LUA

选择空工程后把lua.c加入到工程

在链接器”输入”中加入LUADLL.lib引用进行编译记得把原来工程中的LUADLL.dll和LUADLL.lib放到对应工程目录下

可以编译运行了

 

 

七.关于lua.exe的使用

   在VS2008中”工具”中选择”外部工具”

             

  

在命令中输入:刚才生成的lua.exe文件的地址

参数就是lua.exe要解析的lua文件的位置

LUA文件名字为Print.lua内容如下

print("Hello world");

运行时选择工具中多增加的LUA(&L)解析器.在输出框中可以得到hello world

运行的时候

  

希望这篇文章可以帮你完成进入lua的天地,相关笔记下载可以到资源中有图更给力

http://download.csdn.net/detail/dingdingko/4020857

原创粉丝点击