如何在C++中集成Lua脚本(LuaPlus篇).pdfVIP

  • 1
  • 0
  • 约4.79千字
  • 约 5页
  • 2019-07-06 发布于江西
  • 举报
如何在C++中集成Lua 脚本(LuaPlus篇) 学习各种外挂制作技术,马上去百度搜索 魔鬼作坊 点击第一个站进入、快速 成为做挂达人。 去年我作了一个Lua 脚本的C++包装,有许多朋友感兴趣,并尝试使用,我感到受宠若惊。 事实上,我作的包装,学习的目的比较强,它还是有许多缺陷的。为了让朋友们少走弯路, 我推荐使用LuaPlus 作为C++的包装。 LuaPlus是Lua 的C++增强,也就是说,LuaPlus本身就是在Lua 的源码上进行增强得来的。 用它与C++进行合作,是比较好的一个选择。 LuaPlus 目前版本为:LuaPlus forLua 5.01Distribution Build 1080 (February28,2004)。大家 可以到站点下载: 我将在下面说明,如何使用LuaPlus,以及如何更方便的让LuaPlus与C++的类合作无间。 1. 调用Lua 脚本 // 创建Lua 解释器: LuaStateOwnerstate; // 执行Lua 脚本: state-DoString(print(Hello World\n)); // 载入Lua 脚本文件并执行: state-DoFile(C:\\test.lua); // 载入编译后的Lua 脚本文件并执行: state-DoFile(C:\\test.luac); 2. 与Lua 脚本互相调用 // 为Lua 脚本设置变量 state-GetGlobals().SetNumber(myvalue, 123456); // 获得Lua 变量的值 int myvalue =state-GetGlobal(myvalue).GetInteger(); // 调用Lua 函数 LuaFunctionint luaPrint= state-GetGlobal(print); luaPrint(Hello World\n); // 让Lua 调用C 语言函数 int add(int a, int b){returna+b;} state-GetGlobals().RegisterDirect(add, add); state-DoString(print(add(3,4))); // 让Lua 调用C++类成员函数 classTest{public: int add(int a,int b){returna+b;}}; Testtest; state-GetGlobals().RegisterDirect(add, test,add); state-DoString(print(add(3,4))); 3. 在Lua 脚本中使用C++类 这个稍微有点小麻烦。不过,我包装了一个 LuaPlusHelper.h的文件,它可以很轻松的 完成这个工作。它的实现也很简单,大家可以从源码上来获得如何用纯LuaPlus 实现同样的 功能。 不过,这里仍然有一个限制没有解决:不能使用虚成员函数。不过考虑到我们仅是在 Lua 调用一下C++函数,并不是要将C++完美的导入到Lua,这个限制完全可以接受。 另外,类成员变量不能直接在 Lua 中访问,可以通过类成员函数来访问(比如 SetValue/GetValue 之类)。 // 下面是一个简单的C++类: classLogger { public: void LOGMEMBER(const char*message) { printf(In memberfunction: %s\n, message); } Logger() { printf(Constructing(%p)...\n,this); v= 10; } virtual ~Logger() { printf(Destructing(%p)...\n,this); } Logger(int n) { printf(--Constructing[%d](%p)...\n,n,this); } Logger(Logger* logger) { printf(--Constructing[%p](%p)...\n,logger,this); logge

文档评论(0)

1亿VIP精品文档

相关文档