首页 / 软件开发 / C++ / 介绍LuaPlus:好用的Lua For C++扩展
介绍LuaPlus:好用的Lua For C++扩展2010-05-19LuaPlus是Lua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。LuaPlus目前版本为:LuaPlus for Lua 5.01 Distribution Build 1080 (February 28, 2004)。大家可以到http://luaplus.org/ 站点下载:源码(http://wwhiz.com/LuaPlus/LuaPlus50_Build1081.zip)目标码(http://wwhiz.com/LuaPlus/LuaPlus50_Build1081_Win32Binaries.zip)介绍LuaPlus: 好用的Lua For C++扩展 沐枫网志[由于lua内核升级到5.1,因此,luaplus也同样跟着升级。最新的luaplus可以通过svn获取,地址 svn://svn.luaplus.org/LuaPlus/work51,同时,luaplus基于5.0的内核仍然在维护更新,也可以通过svn获取,地址 svn://svn.luaplus.org/root/LuaPlus/Dev ]我将在下面说明,如何使用LuaPlus,以及如何更方便的让LuaPlus与C++的类合作无间。1. 调用Lua脚本// 创建Lua解释器:
LuaStateOwner state;
// 执行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函数
LuaFunction<int> luaPrint = state->GetGlobal("print");
luaPrint("Hello World
");
// 让Lua调用C语言函数
int add(int a, int b){ return a+b;}
state->GetGlobals().RegisterDirect("add", add);
state->DoString("print(add(3,4))");
// 让Lua调用C++类成员函数
class Test{public: int add(int a, int b){return a+b;}};
Test test;
state->GetGlobals().RegisterDirect("add", test, &Test::add);
state->DoString("print(add(3,4))");