• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近一段时间都在学习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文件上添加如下代码:

  1. // mytest.cpp : 定义控制台应用程序的入口点。  
  2. //  
  3.   
  4. #include "stdafx.h"  
  5. #include <iostream>  
  6. #include <stdlib.h>  
  7. #include <stdio.h>  
  8. #include <string.h>  
  9.   
  10. extern "C"  
  11. {  
  12. #include "lua.h"  
  13. #include "lualib.h"  
  14. #include "lauxlib.h"  
  15. };  
  16.   
  17. using namespace std;  
  18.   
  19. int _tmain(int argc, _TCHAR* argv[])  
  20. {  
  21.     //打开Lua  
  22.     lua_State *L = luaL_newstate();  
  23.       /*加载lua所有库*/  
  24.     luaL_openlibs(L);  
  25.     //luaopen_base(L);    
  26.     //luaopen_io(L);                //替换老版本的lua_iolibopen(L);    
  27.     //luaopen_string(L);            //替换老版本的lua_strlibopen(L);    
  28.     //luaopen_math(L);              //替换老版本的lua_mathlibopen(L);    
  29.     //luaopen_debug(L);             //替换老版本的lua_dblibopen(L);    
  30.        /*加载test.lua文件并运行*/  
  31.     luaL_dofile(L, "test.lua");  
  32.       /*清除lua*/  
  33.     lua_close(L);  
  34.     getchar();  
  35.   
  36.     return 0;  
  37. }  
跟mytest.cpp同目录下的lua文件,名为test.lua,其代码如下:
  1. print("hello world")  

第六步:不多说,直接运行看结果。


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

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


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

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


第二步:完成上面之后,再运行看看。还是出错,错误代码如下:

  1. 错误 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即可。


 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua日期的一些函数发布时间:2022-07-22
下一篇:
Lua语法基础(二)发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap