您的位置:首页 > 编程语言 > Lua

Lua在vs2013的配置环境以及C++如何调用lua

2014-12-05 22:50 706 查看
最近一段时间都在学习lua脚本,lua的强大不多说了,自己百度去。

自己在网上也找了好多关于lua的资料,有几个不错的博客,想学习的朋友可以去了解以下。http://www.jellythink.com/archives/category/language/lua

当然自己也是按照上面的例子一一去验证,我是在linux平台上运行的,所有比较容易操作,而且lua的配置环境也很好弄。

不过在windows平台,使用vs2013工具就麻烦要死。当然,如果你配置好了环境,那也是很简单的。下面我说说怎么在vs2013下配置环境的。

一、制作我们的Lua库(lua.lib)

第一步:准备好lua的源文件(目前我用的是最新版本lua-5.2.3,下载地址:http://www.lua.org/download.html);

第二步:把lua-5.2.3源文件随便放一个盘的目录下(好处是路径少,目前我是喜欢放到D盘,比如:D:\lua-5.2.3);

第三步:运行vs2013,新建一个win32控制台应用程序项目,项目名称:Lualib。如图:



第四步:按确定之后,再点击下一步后,进入“应用程序设置”界面,在应用程序类型:选择“静态库”,附加选项:去掉预编译头。然后点击完成。如图:



第五步:在Lualib工程的头文件和源文件分别附加上lua-5.2.3的(.h文件)和(.c文件)

        ①:鼠标右击Lualib工程目录下的头文件----->添加------>现有项   把:D:\lua-5.2.3\src中所有.h头文件添加进来

                ②:鼠标右击Lualib工程目录下的源文件----->添加------>现有项   把:D:\lua-5.2.3\src中所有.c源文件添加进来

第六步:接下来是比较重要的,配置项目属性。  打开菜单栏上的“项目”------->“属性”-------->“配置属性”

        ①:在C/C++选项下,选中常规,第一项“附加包含目录”中填上D:\lua-5.2.3\src。如图:



                     

        ②:在C/C++选项下,选中高级,第二项“编译为”选择:编译为C代码(/TC)。点击确定。如图:



第七步:上面完成之后。直接运行项目,生成我们需要的lua.lib文件。不过我这里直接运行会出现以下的错误,如图:



             

     不过不用担心,已经有办法修复。还是在配置属性上面设置。        

              打开菜单栏上的“项目”------->“属性”-------->“配置属性”。在C/C++选项下,选中预处理器
,在第一选项的“预处理器定义”中加入_CRT_SECURE_NO_WARNINGS 即可。

    


 第八步:再次运行项目,你会发现弹出“无法启动程序”的警告。这个不用管,我们看“输出框”最后一句话就好。因为我们是弄静态库的,当然是不能启动程序啦。



              

完成这一步,我们的lua库终于做好了。不信,你在D:\vsProject\Lualib\Debug下是不是有个Lualib.lib文件啊。这就是我们要的库。接下来拿个简单例子测试一下。

二、测试C++调用Lua

第一步:跟上面一样,新建一个win32控制台应用程序项目,项目名称为:mytest。然后点击完成即可。

第二步:鼠标右击解决方案,添加现有项目(记住是现有项目,而不是现有项,不然后面会出差错的哦),找到上面创建的Lualib文件夹下的Lualib.vcxproj文件,点击确定添加。

如图:


第三步:鼠标右击mytest项目,选择“属性”,然后选中“通用属性”下的“引用”添加Lualib的引用。如图:



第四步:在“配置属性” 的在“C/C++项”中选着“常规”,在第一项“附加包含目录”中填上D:\lua-5.2.3\src。如图



第五步:上面完成之后,不多说,直接上代码。在mytest.cpp文件上添加如下代码:

// mytest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
//打开Lua
lua_State *L = luaL_newstate();
/*加载lua所有库*/
luaL_openlibs(L);
//luaopen_base(L);
//luaopen_io(L); //替换老版本的lua_iolibopen(L);
//luaopen_string(L); //替换老版本的lua_strlibopen(L);
//luaopen_math(L); //替换老版本的lua_mathlibopen(L);
//luaopen_debug(L); //替换老版本的lua_dblibopen(L);
/*加载test.lua文件并运行*/
luaL_dofile(L, "test.lua");
/*清除lua*/
lua_close(L);
getchar();

return 0;
}

跟mytest.cpp同目录下的lua文件,名为test.lua,其代码如下:

print("hello world")
第六步:不多说,直接运行看结果。



三、在网上下载别人的代码运行的例子


第一步:直接运行例子,看看能不能正常运行或者有什么出错的。刚下的文件,一运行立马报错。见图:



看看什么意思呢?原来是没有包含lua几个的头文件,因为我下的例子刚好没有。没事,没有头文件,我们就加头文件,跟上面的测试例子有的相似。

在“配置属性” 的在“C/C++项”中选着“常规”,在第一项“附加包含目录”中填上D:\lua-5.2.3\src。如图



第二步:完成上面之后,再运行看看。还是出错,错误代码如下:
错误 1 error LNK1104: 无法打开文件“C:\Users\wy\Desktop\LuaLearning4\Debug\..\..\lib\lua5.1.lib C:\Users\wy\Desktop\LuaLearning4\LuaLearning4\LINK LuaLearning4


看到这个,大家应该知道是没有找到库的原因吧。那好,我们就加上我们上面制作的库吧。还记得怎么附加进去吗?

①:鼠标右击解决方案,添加现有项目,找到上面创建的Lualib文件夹下的Lualib.vcxproj文件,点击确定添加。



②:鼠标右击项目,选择“属性”,然后选中“通用属性”下的“引用”添加Lualib的引用。如图:



第三步:好,我们再运行看看。什么,还是同样的问题?我猜估计是路径问题了。呵呵,找找看。这路径刚好对应我们的链接器。好了,上图:



原来问题出在这里,这个应该是原来的例子就设置好链接库的。不过我现在用的是新的版本lua-5.2.3。就用我们之前的做的库吧。

说到这里,有两种办法解决这个问题。

第一种解决方法:直接把“附加依赖项”的内容全删除了。估计有人会问到为什么?  那我诚心诚意的回答你,我们不是附加了一个库了吗?把它删了,不就可以链接到我们的库了吗?

第二种解决方法:直接把“附加依赖项”的内容全删除了,不过把我们的库及其路径放上去。如:D:\vsProject\Lualib\Debug\Lualib.lib即可。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua vs2013 c++