lua库 调用

一、制作我们的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文件上添加如下代码:

[cpp]  view plain  copy
  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,其代码 如下:

[plain]  view plain  copy
  1. print("hello world")  

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


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

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


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

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


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

[plain]  view plain  copy
  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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值