天天挂茶馆

1149 发表于 2018-10-7 18:12:55

c++调用大漠系列:c++给LUA传递参数

本帖最后由 1149 于 2018-10-7 21:08 编辑

1,传递普通变量
int main(void)
{
      lua_State *L = lua_open();
      lua_State *L1 = lua_open();
      luaopen_base(L);//加载基础库
      luaopen_string(L);//加载字符串库
      luaopen_table(L);//加载表处理库
      lua_register(L, "test", test);
      
      lua_pushstring(L, "全局变量值");//在堆栈里push一个值
      lua_setglobal(L, "name");//从堆栈上弹出一个值,并将其设为全局变量 name 的新值。
      
      if (luaL_loadfile(L, "main.lua"))
      {
               
                printf("加载错误:%s\n", lua_tostring(L, -1));
      }


      if (lua_pcall(L, 0, 0, 0))
      {
                printf("调用错误:%s\n", lua_tostring(L, -1));
      }

      getchar();

      
      return 0;
}



2,传递表
int main(void)
{
        lua_State *L = lua_open();
        luaopen_base(L);//加载基础库
        luaopen_string(L);//加载字符串库
        luaopen_table(L);//加载表处理库
        lua_register(L, "test", test);
       
        lua_newtable(L);//创建一个表
       
        lua_pushnumber(L, 1);
        lua_pushnumber(L, 22);
        lua_settable(L, -3);
       
        lua_pushnumber(L, 2);
        lua_pushnumber(L, 33);
        lua_settable(L, -3);
       
        lua_setglobal(L, "name");//将你创建的表设置为全局变量
       
        if (luaL_loadfile(L, "main.lua"))
        {
               
                printf("加载错误:%s\n", lua_tostring(L, -1));
        }


        if (lua_pcall(L, 0, 0, 0))
        {
                printf("调用错误:%s\n", lua_tostring(L, -1));
        }

        getchar();

       
        return 0;
}


页: [1]
查看完整版本: c++调用大漠系列:c++给LUA传递参数