文章目录LuaBridge 3 完整介绍 快速上手使用一、核心介绍1. 是什么2. 能做什么3. 优势二、安装 / 集成1. 下载2. 只需做两件事3. 依赖三、最常用 4 大功能直接复制跑1. 初始化 Lua 环境2. C 调用 Lua 函数Lua 脚本test.luaC 调用3. Lua 调用 C 函数4. 把 C 类暴露给 Lua最常用Lua 使用四、高级常用功能1. C 访问 Lua Table2. Lua 访问 C 容器vector/map3. 类的静态属性/方法4. 多返回值五、编译命令g六、LuaBridge 3 总结超精简LuaBridge 3 完整介绍 快速上手使用LuaBridge 3 是目前最轻量、最简单、无依赖的C ↔ Lua 绑定库专门用来在 C 里调用 Lua、或者在 Lua 里调用 C 函数/类是游戏、插件系统、脚本化逻辑最常用的库。我给你整理最实用、能直接复制跑的版本不讲废话。一、核心介绍1. 是什么纯头文件库只需 1 个文件夹无需编译支持 C11 及以上支持 Lua 5.1 / 5.2 / 5.3 / 5.4 / LuaJIT无第三方依赖性能极高、体积极小语法非常简洁比 LuaBind、Sol2 更轻更快2. 能做什么在C 调用 Lua 函数在Lua 调用 C 函数把C 类暴露给 Lua成员函数、成员变量、构造函数共享数据int/float/string/table/userdata 自动转换做游戏逻辑、热更新、插件系统、配置脚本3. 优势✅ 纯头文件✅ 编译极快✅ 语法自然✅ 体积小几十 KB✅ 稳定、无坑✅ 游戏行业大量使用二、安装 / 集成1. 下载https://github.com/kunitoki/LuaBridge32. 只需做两件事把Source/LuaBridge/整个目录加入头文件路径包含头文件#includeLuaBridge/LuaBridge.h3. 依赖你必须自己集成 Lua 库Lua 5.4 最常用三、最常用 4 大功能直接复制跑1. 初始化 Lua 环境#includeiostream#includeLuaBridge/LuaBridge.hintmain(){// 1. 创建Lua状态机lua_State*LluaL_newstate();luaL_openlibs(L);// 打开Lua标准库// 你的绑定代码写这里 // 关闭lua_close(L);return0;}2. C 调用 Lua 函数Lua 脚本test.luafunctionadd(a,b)returnabendC 调用// 加载Lua文件luaL_dofile(L,test.lua);// 调用 Lua 函数 add(10, 20)autoresluabridge::getGlobal(L,add)(10,20);intsumres;// 自动转intstd::coutsumstd::endl;// 输出 303. Lua 调用 C 函数// 定义C函数intcpp_add(inta,intb){returnab;}// 绑定到Lua全局luabridge::getGlobalNamespace(L).addFunction(cpp_add,cpp_add);然后 Lua 就能直接调用localrescpp_add(100,200)print(res)-- 3004. 把 C 类暴露给 Lua最常用// 一个C类classPlayer{public:inthp;std::string name;Player(std::string n,inth):name(n),hp(h){}voidattack(){std::coutname 攻击\n;}};// 绑定到Lualuabridge::getGlobalNamespace(L).beginClassPlayer(Player).addConstructorvoid(*)(std::string,int)()// 构造函数.addData(hp,Player::hp)// 成员变量.addData(name,Player::name).addFunction(attack,Player::attack)// 成员函数.endClass();Lua 使用localpPlayer(小明,100)print(p.name,p.hp)p:attack()p.hp80print(p.hp)四、高级常用功能1. C 访问 Lua Tablelocalcfg{speed10,nametest}autotblluabridge::getGlobal(L,cfg);intspeedtbl[speed];std::string nametbl[name];2. Lua 访问 C 容器vector/mapLuaBridge 3 原生支持std::vectorintvec{1,2,3};luabridge::push(L,vec);lua_setglobal(L,vec);Luaprint(vec[1],vec[2],vec[3])3. 类的静态属性/方法.addStaticData(static_val,MyClass::static_val).addStaticFunction(static_func,MyClass::static_func)4. 多返回值Cluabridge::LuaReffunc(luabridge::newTable(L));func[x]100;func[y]200;returnfunc;Lua 直接接收 table。五、编译命令gg-stdc11 main.cpp-otest-llua-ldl六、LuaBridge 3 总结超精简纯头文件、轻量、无依赖C ↔ Lua 双向调用类、函数、变量、table、vector 全支持游戏/脚本/热更首选比 Sol2 轻比 LuaBind 简单如果你愿意我可以直接给你✅可直接编译运行的完整 Demo 项目✅LuaBridge Lua 5.4 一键集成 CMake 模板✅游戏里最常用的脚本框架
LuaBridge3介绍和使用
文章目录LuaBridge 3 完整介绍 快速上手使用一、核心介绍1. 是什么2. 能做什么3. 优势二、安装 / 集成1. 下载2. 只需做两件事3. 依赖三、最常用 4 大功能直接复制跑1. 初始化 Lua 环境2. C 调用 Lua 函数Lua 脚本test.luaC 调用3. Lua 调用 C 函数4. 把 C 类暴露给 Lua最常用Lua 使用四、高级常用功能1. C 访问 Lua Table2. Lua 访问 C 容器vector/map3. 类的静态属性/方法4. 多返回值五、编译命令g六、LuaBridge 3 总结超精简LuaBridge 3 完整介绍 快速上手使用LuaBridge 3 是目前最轻量、最简单、无依赖的C ↔ Lua 绑定库专门用来在 C 里调用 Lua、或者在 Lua 里调用 C 函数/类是游戏、插件系统、脚本化逻辑最常用的库。我给你整理最实用、能直接复制跑的版本不讲废话。一、核心介绍1. 是什么纯头文件库只需 1 个文件夹无需编译支持 C11 及以上支持 Lua 5.1 / 5.2 / 5.3 / 5.4 / LuaJIT无第三方依赖性能极高、体积极小语法非常简洁比 LuaBind、Sol2 更轻更快2. 能做什么在C 调用 Lua 函数在Lua 调用 C 函数把C 类暴露给 Lua成员函数、成员变量、构造函数共享数据int/float/string/table/userdata 自动转换做游戏逻辑、热更新、插件系统、配置脚本3. 优势✅ 纯头文件✅ 编译极快✅ 语法自然✅ 体积小几十 KB✅ 稳定、无坑✅ 游戏行业大量使用二、安装 / 集成1. 下载https://github.com/kunitoki/LuaBridge32. 只需做两件事把Source/LuaBridge/整个目录加入头文件路径包含头文件#includeLuaBridge/LuaBridge.h3. 依赖你必须自己集成 Lua 库Lua 5.4 最常用三、最常用 4 大功能直接复制跑1. 初始化 Lua 环境#includeiostream#includeLuaBridge/LuaBridge.hintmain(){// 1. 创建Lua状态机lua_State*LluaL_newstate();luaL_openlibs(L);// 打开Lua标准库// 你的绑定代码写这里 // 关闭lua_close(L);return0;}2. C 调用 Lua 函数Lua 脚本test.luafunctionadd(a,b)returnabendC 调用// 加载Lua文件luaL_dofile(L,test.lua);// 调用 Lua 函数 add(10, 20)autoresluabridge::getGlobal(L,add)(10,20);intsumres;// 自动转intstd::coutsumstd::endl;// 输出 303. Lua 调用 C 函数// 定义C函数intcpp_add(inta,intb){returnab;}// 绑定到Lua全局luabridge::getGlobalNamespace(L).addFunction(cpp_add,cpp_add);然后 Lua 就能直接调用localrescpp_add(100,200)print(res)-- 3004. 把 C 类暴露给 Lua最常用// 一个C类classPlayer{public:inthp;std::string name;Player(std::string n,inth):name(n),hp(h){}voidattack(){std::coutname 攻击\n;}};// 绑定到Lualuabridge::getGlobalNamespace(L).beginClassPlayer(Player).addConstructorvoid(*)(std::string,int)()// 构造函数.addData(hp,Player::hp)// 成员变量.addData(name,Player::name).addFunction(attack,Player::attack)// 成员函数.endClass();Lua 使用localpPlayer(小明,100)print(p.name,p.hp)p:attack()p.hp80print(p.hp)四、高级常用功能1. C 访问 Lua Tablelocalcfg{speed10,nametest}autotblluabridge::getGlobal(L,cfg);intspeedtbl[speed];std::string nametbl[name];2. Lua 访问 C 容器vector/mapLuaBridge 3 原生支持std::vectorintvec{1,2,3};luabridge::push(L,vec);lua_setglobal(L,vec);Luaprint(vec[1],vec[2],vec[3])3. 类的静态属性/方法.addStaticData(static_val,MyClass::static_val).addStaticFunction(static_func,MyClass::static_func)4. 多返回值Cluabridge::LuaReffunc(luabridge::newTable(L));func[x]100;func[y]200;returnfunc;Lua 直接接收 table。五、编译命令gg-stdc11 main.cpp-otest-llua-ldl六、LuaBridge 3 总结超精简纯头文件、轻量、无依赖C ↔ Lua 双向调用类、函数、变量、table、vector 全支持游戏/脚本/热更首选比 Sol2 轻比 LuaBind 简单如果你愿意我可以直接给你✅可直接编译运行的完整 Demo 项目✅LuaBridge Lua 5.4 一键集成 CMake 模板✅游戏里最常用的脚本框架