Lua与C/C++程序的整合
初期设计要点,应尽可能的确定每一个可以使用Lua的地方
Lua环境由所有可操作的数据构成,如编译好的函数、变量以及其它运行时内存,这些数据保存在一个叫lua_State的机构中。Lua应用程序中至少有一个lua_State,如果需要可以有多个。Lua环境是用来发送和接收数据的地方,它利用栈(Lua Stack)来达到该目的。Lua栈不同于系统栈,它只能通过Lua的API来访问(略感乏味,但是一定要细读)
LuaGlue函数
Lua可以让程序员开发在Lua脚本中调用C++函数接口,我们把这些接口称作LuaGlue函数,LuaGlue是读取和修改C++数据、调用C++函数的主要工具
创建Lua运行环境,可以使用Lua API 中的lua_open()函数
Lua运行环境初始化
Lua_State *pLuaState = lua_open()
luaopen_base(pLuaState)
lua_iolibopen(pLuaState)
lua_mathlibopen(pLuaState)
lua_dbliopen(pLuaState)
函数向lua_State结构返回了一个指向Lua运行换进的指针
上面的例子,初始化了所有Lua5.0.2版本的程序库,这样可以让Lua脚本访问所有函数
添加LuaGlue函数
程序需要注册LuaGlue函数,让C++代码可以被Lua脚本访问,示例用了一个简单的函数,用以输出程序和Lua的版本信息
for(int i=0;ConsoleGlue[i].name;i++)
{
lua_register(pLuaState,ConsoleGlue[i],func);
}
持续更新.....