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

lua与c++的相互调用入门篇

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

    进入游戏行业,开始学习lua,lua脚本语言的优势在于灵活,游戏行业应用相当广泛,因为支持动态加载,所以是必不可少的存在。可以想想,如果死守C++不放,有一个bug,莫非修正bug后重启服务器?这得浪费多少时间?

   好了,废话少说,上流程。

    1:下载lua源码:http://www.lua.org/ftp/

    2:建立控制台应用程序,选择“静态库”,去掉“预编译头”选项

              

        3:将下载的lua源码 添加到工程,如下图

              

 

             4:选择Release 模式

             5:为了防止4996错误,在“预处理器”中加入 “_CRT_SECURE_NO_WARNINGS”

              

              6:好了,编译生成.

              

 

 

 

           源码编译工作到这里就结束了,进入第二步

         二:

            1:新建控制台应用程序,包含源码目录,为了方便以后应用,将lib文件改名“lua.lib",源码文件放入单一文件夹;

             2:在工程属性中"附加包含目录“包含lua源码目录,博主这里放在C盘。

              

                3:"附加依赖项" 包含 lib,记得放置在当前工作目录下,别忘记了。(提醒自学编程的同学)

                    

 

                三:开始最后一步,堆代码啦。。

                 C++代码如下:

                     

#include "stdafx.h"
#include <iostream>
extern "C"
{
#include <lua.h>
 #include <lualib.h>
 #include <lauxlib.h>
}

lua_State *L;


static int frist_lua(lua_State * L)
{   
  int num =lua_tonumber(L,1);
  std::cout<<num<<std::endl;
  lua_pushstring(L,"Hello Lua");
return 1;
}


int _tmain(int argc, _TCHAR* argv[])
{   
    L= luaL_newstate();   //注册一个状态机
    luaL_openlibs(L);    //加载lua库
    
    lua_register(L,"frist_lua",frist_lua);
    luaL_dofile(L,"C:\\hellolua.lua");   //加载lua脚本
    lua_close(L);   //释放虚拟机
    getchar();
    return 0;
}

    lua代码:

     

local hello = frist_lua(1)
print(hello)

   运行结果:

     

 

 

 

 

   最后提醒下,真正的应用lua与c++交互 还有很多第三方插件,这里推介几款:

     lua tinker(lua5.0开发出来的插件,据说是韩国人,随着更新5.1还能用,5.2就不能用了网上流传作者不知道去哪里了,好在广大的程序猴们自己动手丰衣足食,5.2改动了下可以用了,下载地址如下,包含lib和库即可,http://download.csdn.net/download/kingsollyu/6888211)  博主就用的这个,比较不错。

      

     tolua++
使用MIT license。下载地址:http://www.codenix.com/~tolua/        //这个口碑也不错呀~!各有所好~

                


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
luaxpcall函数学习发布时间:2022-07-22
下一篇:
Lua报unexpectedsymbolnear错误发布时间: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