windows下编译lua源码

本文详细介绍了如何编译Lua源码,包括生成库文件、解释器和编译器。重点在于理解编译过程和使用批处理脚本简化操作。在VS命令行下,通过cl.exe进行编译,并提到了/DLUA_BUILD_AS_DLL宏的重要性。同时,文中也提及了编译过程中遇到的问题及解决办法。
摘要由CSDN通过智能技术生成

       所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的。而且lua越做越精简了,5.1的版本里面还有一些test的例子之类的,5.2就只剩下必须的内容了。

       然后,如果是第一次编译lua,还是建议看一下doc文件夹下面的 readme.html。我就是通过那个才知道编译lua必备的文件的。

       通过readme,我们知道了编译lua其实包含3部分内容:编译lua的库文件,编译lua解释器,编译lua编译器。

       需要在vs的命令行模式下通过vc的编译器cl.exe进行编译,所以这3个部分可以用一个批处理文件搞定,下面我们就来写这个批处理,说到底就是3条编译命令罢了。

       在readme目录下建一个新的build.bat文件,如下:

#生成lua的库文件
cd src 
cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c 
del lua.obj luac.obj 
link /DLL /out:lua52.dll l*.obj 
#生成解释器
cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c luac.c 
link /out:lua.exe lua.obj lua52.lib 
#生成编译器
del lua.obj 
link /out:luac.exe l*.obj 
#删除中间
del *.obj

pause

注意:

   1、一个是在cl编译的时候加入了一个自定义的宏 /DLUA_BUILD_AS_DLL 这是因为在luaconf.h文件中定义了LUA_BUILD_AS_DLL宏,它控制了__declspec(dllexport)和__declspec(dllimport)的定义,必须加上这个开关才有这两个定义,否则编译出来的DLL没有任何导出函数。

  2、另一个是在最后生成编译器的时候,会发现我重新链接了所有的obj,而不是像生成解释器的时候一样,直接链接Lua52.lib。这是因为我这么做的时候发生了报错,提示有部分函数找不到。暂时没有明白是什么原因,有人说是bug,暂且不去管他。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值