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

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

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

因为我的电脑上安了vc的编译器cl,所以这3个部分可以用一个批处理文件搞定,下面我们就来写这个批处理,说到底就是3条编译命令罢了。

在上面那个文件夹下建一个新的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,暂且不去管他。

  3、最后bat运行的时候会有报错,  提示”cl.exe, 无法启动此程序,因为计算机中丢失mspdb100.dll。

       因为cl.exe依赖vs的环境, 所以需要在vs的命令行模式下打开进行编译

 

 

ps:  本文引用两个文章:

  https://social.msdn.microsoft.com/Forums/windowshardware/zh-CN/1bbaa698-dc28-4518-a6f9-42c51e86c4a7/cl

http://blog.csdn.net/zjg555543/article/details/11814563

最新文章

  1. OrchardNoCMS vNext如何在VS2015下调试
  2. fabric批量操作远程操作主机的练习
  3. POJ 3617 Best Cow Line (贪心)
  4. C# 读取CSV文件
  5. Boost源码剖析之:泛型指针类any
  6. C#中获取服务器IP,客户端IP以及网卡物理地址
  7. 克隆选择算法-python实现
  8. pdf文件流生成pdf文件
  9. 把数据库中的null作为条件查询应该用is
  10. DOS下导入dmp文件到Oracle数据库
  11. [Swift]LeetCode383. 赎金信 | Ransom Note
  12. sshfs && tailon
  13. 【漏洞复现】Tomcat CVE-2017-12615 远程代码执行漏洞
  14. MySQL索引与Index Condition Pushdown(employees示例)
  15. 【转】通过blob获取图像并显示
  16. jap_spring
  17. OA项目Spring.Net代替抽象工厂(三)
  18. python学习笔记——mongodb数据库
  19. -03-PetaLinux通过eMMC方式启动【Xilinx-Petalinux学习】
  20. Java并发编程(三):并发模拟(工具和Java代码介绍)

热门文章

  1. (medium)LeetCode 236.Lowest Common Ancestor of a Binary Tree
  2. String相关操作
  3. 【转】关系映射文件***.hbm.xml详解
  4. Zookeeper分布式协调服务
  5. OC基础(11)
  6. android 如何设置背景的透明度
  7. cookie、session、sessionid 与jsessionid
  8. jmeter随笔(2)--上传接口报错
  9. memcached学习(4). memcached的分布式算法
  10. 使用Apache CXF开发WebServices服务端、客户端