您的位置:首页 > 编程语言 > Lua

lua 绑定c++

2016-01-14 17:12 441 查看
Lua Binding即lua绑定




lua绑定的基本意思,就是将C++端的类和方法,暴漏在Lua端,使Lua可以调用现在的C++类。

如网络模块中的MsgLuaFilter、LordNetManger、WWBuffer都是C++的类,但是通过lua binding,Lua代码可以随时调用。

下面是lua绑定的过程。———————————— 分割线 ——————————————

1、准备好你的C++类,并添加到工程的某个路径下,现在以LuaToast为例,工程中已有,路径是WWPlatform/GUISystem/,这里重复创建。LuaToast如下:

2、将LuaToast头文件包含到Classes/ToLua.h,此头文件存放所有需绑定到Lua的类的头文件:

3、打开工程根目录下,cocos2d/tools/tolua/,这里有已经添加的ww_data.ini,ww_gui.ini,ww_net.ini三个配置文件,可以根据需要添加新的ini文件,或在已有的ini中添加。

4、查看ini文件,以ww_gui.ini为例。
    prefix,取ini文件名即可,取其他可以名称也无影响,最好有一定的辨识度
    target_namespace,类的命名空间,如取名ww,lua代码中使用的时候以ww.LuaToast的方式调用。
    headers,需要绑定的类的头文件,现统一为ToLua.h
    classes,需要绑定的类,空格隔开
    skip,不用绑定的方法
    其他不用管

5、绑定LuaToast过程:
    target_namespace为ww不用动
    headers为ToLua.h也不用动,因为LuaToast.h已添加到ToLua.h
    classes中添加LuaToast,注意空格
    skip不用管,因为没有需要不绑定的方法,如果LuaToast中有一个方法void bbbb();Lua端用不着,我就不用绑定,只需要这样写skip = LuaToast::[bbbb],可效仿引擎中的ini文件。

6、在终端中执行genbindings_wawagame.py脚本即可生成绑定文件,确定LuaToast所在的ww_gui.ini在python脚本的cmd_args中是没有被注释的,执行脚本后提示success即为绑定成功。

7、绑定成功会生成绑定文件。目录在Classes/lua-bindings/auto/下,这是由genbindings_wawagame.py的output_dir指定的,将绑定文件添加到工程中。
注意同一个ini文件中配置的C++类会生成在同一个绑定文件中,例如lua_ww_gui_auto.cpp中有WWSceneManager NewButton LuaToast WWNetSprite等绑定类。

8、在LuaSupportFactory::registerCustomLuaModule方法中注册绑定的类,已有net、gui、data的注册,如没有另行添加ini文件则跳过此步。

9、LuaToast绑定完成,lua代码中可以使用了,ww.LuaToast即可调用。

10、如果需要添加新的ini文件,如test.ini,复制已有的ini文件修改参数即可,同时需要在genbindings_wawagame.py脚本的cmd_args中添加,#号注释的表示不想在执行脚本时重新生成绑定文件。

完!




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: