《Lua游戏开发实践指南》学习笔记4

Lua与C/C++程序的整合

初期设计要点,应尽可能的确定每一个可以使用Lua的地方

Lua环境由所有可操作的数据构成,如编译好的函数、变量以及其它运行时内存,这些数据保存在一个叫lua_State的机构中。Lua应用程序中至少有一个lua_State,如果需要可以有多个。Lua环境是用来发送和接收数据的地方,它利用栈(Lua Stack)来达到该目的。Lua栈不同于系统栈,它只能通过Lua的API来访问(略感乏味,但是一定要细读)

LuaGlue函数

Lua可以让程序员开发在Lua脚本中调用C++函数接口,我们把这些接口称作LuaGlue函数,LuaGlue是读取和修改C++数据、调用C++函数的主要工具

wKiom1SJAzKDZn02AAByvKZM_KI983.jpg

创建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);

}

持续更新.....

你可能感兴趣的:(lua)