Lua5.3.5源码编译

首先从lua官网下载源码http://www.lua.org/download.html并解压:

 

VS2017 新建项目->控制台应用

将解压出来的src文件夹,拷贝到解决方案目录下

建好项目,添加lua源码:

 

Ctrl+A 选择src目录下所有文件,并添加至项目

至此准备工作完成,接下来分别编译Lua解释器Lua.exe,Lua编译器Luac.exe,Lua静态库(或者动态库)Lualib.lib

编译Lua.exe

    从项目"源文件"筛选器中移除 luac.c。编译即可。

编译Luac.exe

   建议在解决方案下新建个Luac的项目,依然将src下所有文件添加至项目,从项目"源文件"中移除 lua.c,编译即可。

编译Lualib.lib(或Luadll.dll)

  在解决方案下新建项目Lualib 项目(根据需要,动态库或者静态库自行选择),同样将src下所有文件添加至项目,从项目"源文件"中 移除 lua.c和luac.c

也可以先创建控制台应用,然后在项目属性里改:

编译好Lua.exe与Luac.exe后,记得把它们添加到环境变量,否则用起来很不方便。添加环境变量方法,网上资料很多,这里就不说了。

上面教程,在网上随便都可以搜到,我说说我遇到的坑...

 我也按照上面教程编译出lua.exe luac.exe。写了一个测试程序,进行测试

可见lua.exe是没问题的。

测试luac:

正常输入luac a.lua,a.lua所在目录下应该会生一个.out文件,但我运行完并没有生成。

看了一下源码,发现问题所在。

我们为什么在前面要把lua.c或者luac.c只留一个,或者两个都删除(编译lib)? 因为lua.c里有一个main函数,即lua.exe的入口,而luac.c里也有main函数。但正常情况下,一个程序只能有一个main函数入口,所以我们要将另外一个删除,否则有多个main函数会冲突、报错或者出现一些奇怪的问题。

我的问题就找到了,因为在生成项目的时候,会自动生成一个项目名.cpp(Luac项目会生成luac.cpp),这个cpp文件中,就定义了一个main函数,编译的时候,把这个函数作为程序的入口函数,把luac.c中的main函数忽略了。所以luac就无法获取到传进来的参数,也就不会生成.out文件。

 所以在编译的时候,还要记得把项目自动生成的 项目名.cpp文件移除(例如lua.cpp),因为这个文件中的main函数会影响 lua.c或者luac.c中main函数 获取参数,从而使程序无法正常工作。

  想我编译lua.exe时,没有把lua.cpp移除,而且还能正常运行 a.lua文件,应该属于运气好。luac.exe一下就把问题暴露了

 记下来这个小插曲,防止别人遇到和我同样的问题

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值