• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    C++中调用Lua配置文件和响应函数示例

    Lua是脚本语言,最大的优势就是轻巧灵便,不用编译。当C的框架写好,只要更改lua的相应处理即可以更改功能,并且不用重新编译。以下是在C中调用Lua资源方法的示例程序:
     
    C++端:

    // Lua1.cpp : 定义控制台应用程序的入口点。 
    // 
     
    #include "stdafx.h" 
    #includestdio.h> 
     
    extern "C" { //如不用extern会出现连接错误,编译成了C++文件 
    #include lua.h> 
    #include lualib.h> 
    #include lauxlib.h> 
    } 
     
     
    void load (lua_State *L,int *width,int *height){ 
      lua_getglobal(L,"width");  //获得Lua中变量的值,将其放入栈中 
      lua_getglobal(L,"height"); 
     
      if(!lua_isnumber(L,-2))   //栈顶为-1,然后依次减少 
        luaL_error(L,"`width' should be a number\n"); 
     
      if(!lua_isnumber(L,-1)) 
        luaL_error(L,"`height' should be a number\n"); 
      *width = (int)lua_tonumber(L,-2);  //将栈顶元素转化为数字 
      *height = (int)lua_tonumber(L,-1); 
    } 
     
    int add(lua_State *L,int a, int b){  
      int sum=0; 
      lua_getglobal(L,"add");  //函数也是变量,所以一个取法 
      lua_pushnumber(L,a);   //将变量传入 
      lua_pushnumber(L,b);   
        //第二个参数为调用函数的参数的个数,第三个为返回值的个数,第四个参数是错误处理函数,正常运行返回0 
      if(lua_pcall(L,2,1,0) != 0){   
        luaL_error(L,"the lua load error! %s",lua_tostring(L,-1)); 
      } 
         //函数的返回值已经传入栈中 
      if(!lua_isnumber(L,-1)){  
        luaL_error(L,"the func run error! %s",lua_tostring(L,-1)); 
      } 
     
      sum = (int)lua_tonumber(L,-1); //取栈顶元素将其转为数字,默认为double型 
       lua_pop(L,1)    //将return元素移除 
      return sum; 
    } 
     
    int get_num(lua_State *L){ 
       
      lua_getglobal(L,"roll_num"); 
      if(lua_pcall(L,0,1,0) != 0){ 
        luaL_error(L,"the lua load error! %s",lua_tostring(L,-1)); 
      } 
     
      if(!lua_isnumber(L,-1)){ 
        luaL_error(L,"the func run error! %s",lua_tostring(L,-1)); 
      } 
       int n = (int)lua_tonumber(L,-1); 
      lua_pop(L,1); 
      return n; 
    } 
    int _tmain(int argc, _TCHAR* argv[]) 
    { 
      lua_State *L = lua_open(); 
      luaL_openlibs(L); //新版本库添加的方法 
      if(luaL_loadfile(L,"cof.lua") || lua_pcall(L,0,0,0)){ 
        luaL_error(L,"loadfile error! %s \n",lua_tostring(L,-1)); 
      } 
     
      int w=1,h=2; 
      int sum; 
      load(L,w,h); 
      printf("width is %d ,height is %d\n",w,h); 
      sum=add(L,w,h); 
      printf("the sum is: %d \n",sum); 
       
       
      bool flag = true; 
      char c; 
      while(flag){ 
        printf("Do you want to roll the number? \n"); 
        scanf("%c",c); 
        if(c == 'y' || c=='Y'){ 
          printf("rolling the number....\n the num is %d \n",get_num(L)); 
        } 
        else flag=false; 
        getchar(); 
      } 
     
      getchar(); 
      return 0; 
    } 


    Lua 文件:
     

    -- config test 
     
    width = 200 
    height = 500 
     
    function add(a,b) 
      return a+b 
    end 
     
    math.randomseed(os.time()) 
    function roll_num() 
      return math.random(6) 
    end 


    您可能感兴趣的文章:
    • C++读写ini配置文件实现过程详解
    • 定义vim配置文件vimrc用于c/c++编程
    • C++读写INI配置文件的类实例
    • C++读取INI配置文件类实例详解
    • c++实现逐行读取配置文件写入内存的示例
    • C++读取配置文件的示例代码
    上一篇:Lua脚本语言基本语法快速入门教程
    下一篇:Lua中调用C++函数示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    C++中调用Lua配置文件和响应函数示例 C++,中,调用,Lua,配置文件,