[转载]使用VS2015搭建Lua开发环境

参考原文请看:html

Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境(一)c++

Lua学习笔记2:Windows7下使用VS2015搭建Lua开发环境(二)windows

本篇主要分如下几个部分:函数

1、下载并利用vs2015编译lua源码工具

  编译lua主要编译三个部分,lua连接库,lua解释器,lua编译器学习

  lua连接库就是静态库和动态库,*.lib和*.dll。有了dll就能够直接在工程里开发了。就如示例二中,直接添加了连接,就能够调用lua函数,并正常运行了。测试

  lua.exe是lua的解释器,能够直接运行lua脚本;就是编写了lua文件,好比test.lua,就能够运行,或者在命令行直接输入lua,而后按照lua规则写脚本并直接运行了。lua

  luac.exe是lua的编译工具,生成lua字节码,以便lua代码的更快加载和保护lua代码,同时也能检查lua脚本的错误。spa

2、示例:使用vs2015建立c++,调用lua方法命令行

 

1、下载并编译lua源码

 <1>、首先进入lua官网,下载最新版本的lua源码。

lua1.png

 

lua2.png 

  这里我将文件解压放到D盘,D:\lua-5.3.1就是该目录。

 

lua3.png 

<2>、启动VS2015建立新的项目

 

  一、选择【文件】—>【新建】—>【项目】,选择Win32里面的Win32控制台应用程序,这里我设置名称为Lua5.3,其余配置参数不变,点击【肯定】按钮。

 

1.png 

 

  二、在应用程序设置向导里面,选择类型为【静态库】,而后点击【完成】便可,如图所示。

 

2.png 

 

  三、建立好项目后,在【头文件】选项上点击鼠标右键,以此选择【添加】—>【现有项】,而后找到咱们的lua目录下的src文件夹,这里个人为D:\lua-5.3.1\src目录。而后咱们把src下的全部.h文件添加到头文件。

  四、同上操做,咱们把除去【lua.c】和【luac.c】觉得的全部.c文件都添加到【源文件】。

  注意: 须要注意的是 lua.c  和luac.c 不能拷贝进去,这两个文件不能编译。如图所示:

 

3.png 

 

  五、配置项目的属性,在项目的“配置属性” 界面中操做选择【C/C++】—> 【常规】—> 【附加包含目录】,而后输入咱们的lua源码路径D:\lua-5.3.1\src。如图所示:

 

4.png

 

  而后在【C/C++】—> 【高级】—> 【编译为】选择【编译为C代码(/TC)】,最后肯定。

 

5.png 

 

  配置好上面这些后,而后咱们就能够开始编译此项目来生成咱们须要的.lib库文件,如图。

 

6.png 

 

  这里生成成功了,若是Debug生成失败你们可使用Release 来生成,生成后的.lib文件咱们能够在咱们的项目目录里查看,如图所示。

7.png 

 <3>、生成了lib文件,可能已经知足需求了,可是若是须要dll的话,也要生成dll文件。

  利用上面已经建好的目录,右键项目->属性,打开属性界面,选择配置属性-》常规,将配置类型由lib,改为dll。如图所示:

  

  点击应用,肯定。而后从新生成,就能够生成dll文件。

<4>、编译lua解释器lua.exe

  将lua.c和luac.c添加进项目的源文件。而后将luac.c的main函数注释掉。

  一样,将项目的配置类型改成exe,而后右键项目从新生成,不出问题会生成lua5.3.exe,但也可能出错。我遇到的错误是:

  MSVCRTD.lib(crtexew.obj) : error LNK2019: 没法解析的外部符号 WinMain

  这个错误是入口函数不对致使的。

  ‘

  缘由分析

 

产生这个问题的真正缘由是c++语言运行时找不到适当的程序入口函数,通常状况下,若是是windows程序,那么WinMain是入口函数,在VS2010中新建项目为“win32项目”若是是dos控制台程序,那么main是入口函数,在VS2010中新建项目为“win32控制台应用程序”。而若是入口函数指定不当,很显然c++语言运行时找不到配合函数,它就会报告错误。

  解决办法

若是咱们须要的是windows程序

Step1.菜单中选择 Project->Properties, 弹出Property Pages窗口
Step2.在左边栏中依次选择:Configuration Properties->C/C++->Preprocessor,而后在右边栏的Preprocessor Definitions对应的项中删除_CONSOLE, 添加_WINDOWS.
Step3.在左边栏中依次选择:Configuration Properties->Linker->System,而后在右边栏的SubSystem对应的项改成Windows(/SUBSYSTEM:WINDOWS)

若是咱们须要的是控制台程序

Step1.菜单中选择 Project->Properties, 弹出Property Pages窗口
Step2.在左边栏中依次选择:Configuration Properties->C/C++->Preprocessor,而后在右边栏的Preprocessor Definitions对应的项中删除_WINDOWS, 添加_CONSOLE.
Step3.在左边栏中依次选择:Configuration Properties->Linker->System,而后在右边栏的SubSystem对应的项改成CONSOLE(/SUBSYSTEM:CONSOLE)

 

  ’

  这里,咱们须要的是console也就是控制台程序。所以添加_CONSOLE,并将系统改成CONSOLE以后,就能够生成lua.exe了。

<5>、生成编译器luac.exe

  将lua.c的main函数注释掉,解开luac.c的main函数,直接从新生成就是luac.exe了。

到此为止,咱们的lua5.3就编译好了,为方便之后引用,这里我把他拷贝到lua\bin目录下,如图所示。

 

2、示例

(1)、连接库示例

  一、首先咱们使用vs2015新建一个Win32控制台应用程序,命名为LuaTest。

test1.png

test2.png

 

 

  二、配置lua项目头文件默认路径

 

在项目的“配置属性” 界面中操做选择【C/C++】—> 【常规】—> 【附加包含目录】,而后输入咱们的lua源码路径D:\lua-5.3.1\src。如图所示:

test3.png 

 

  三、为项目添加.lib库引用

配置项目的属性,在项目的“配置属性” 界面中操做选择【连接器】—> 【常规】—> 【附加库目录】,而后输入咱们的lua库文件目录,这个目录为咱们上篇结尾处放置的位置。也就是咱们的lua5.3的源码目录,D:\lua-5.3.1\。如图所示:

test4.png 

 

配置项目的属性,在项目的“配置属性” 界面中操做选择【连接器】—> 【输入】—> 【附加依赖库】位置添加咱们所编译的Lua5.3.lib库文件名称,而后肯定便可。如图所示:

test5.png 

 

到此咱们的lua开发环境算是配置好了,下面咱们来测试咱们本身搭建的lua环境。

咱们在源代码里建立一个main.lua的文件,如图所示

test6.png 

建立好后,咱们在里面输入打印文本。如图所示:

test7.png 

 

而后在LuaTest.cpp主函数里面,咱们引用标准输入输出以及lua的头文件,而后编写测试代码,这里是打印main.lua文件里的内容。如图所示:

test8.png

test9.png 

到此,咱们完整的lua环境就算搭建好了啊。

<2>、命令行测试

  将刚才bin目录,配置到个人电脑环境变量path内。敲入cmd命令,将控制台打开,输入lua,将出现

  

 

  输入print("hello world!")

  控制台会输出hello world!。这标志这lua.exe编译正确。

<3>、luac.exe

  有的时候咱们的lua程序不想被别人看到源码,咱们就编译成一个.out中间文件,首先建立一个lua程序(新建记事本程序后改后缀名.lua)hello.lua,在里面写print("hello world")而后在控制台切换到luac.exe的目录下输入luac hello.lua,会获得一个luac.out文件,而后在控制台输入lua.exe luac.out就能够输出Hello World了。

总结工做终于大功告成啦~~~~~