tolua++ 使用有感
2013-05-31 15:18
232 查看
最近努力的完善基于 cocos2d-x lua 框架,要靠 tolua++ 来封装 hosts 用到的类,发现这东西还是不太智能,存在很多需要注意的地方。
如果要自己扩展数据类型,比如支持 lua 函数回调,就得仿照 cocos2d-x tools 目录下的 tolua 那些 pkg + basic.lua ,注册/替换一些 tolua 生成错误的东西。
另外在代码编码方面,也有很多注意事项:
比如它无法识别 const 写在类型后面的情况,像这样: const char * 可以被识别,但 char const * 则无法识别(后果就是 tolua 认为 char const 整个是个变量名)
再比如 int * 它不认识,那只有在预处理 lua 中 replace 掉它的生成错误(在相应的部位加 * 号之类)
一些什么 vector, ** 什么的 也是无法识别的,需要专门的写一些遍历或什么函数来配合 lua 使用
又比如 const char * const 这样的写法,它也是无法识别的,得在 pkg 中去掉后面的 const, 前面加上 tolua_readonly 才行。
最后有个隐蔽的: 像有些 c 代码里的 int/*bool*/val 这种声明,tolua 是无法识别的(它可能是先去掉了所有注释,于是不知道 int 和 val 是分离的了),得处理
上面的说法还不够全面,先想到这么多,后面再补。
如果要自己扩展数据类型,比如支持 lua 函数回调,就得仿照 cocos2d-x tools 目录下的 tolua 那些 pkg + basic.lua ,注册/替换一些 tolua 生成错误的东西。
另外在代码编码方面,也有很多注意事项:
比如它无法识别 const 写在类型后面的情况,像这样: const char * 可以被识别,但 char const * 则无法识别(后果就是 tolua 认为 char const 整个是个变量名)
再比如 int * 它不认识,那只有在预处理 lua 中 replace 掉它的生成错误(在相应的部位加 * 号之类)
一些什么 vector, ** 什么的 也是无法识别的,需要专门的写一些遍历或什么函数来配合 lua 使用
又比如 const char * const 这样的写法,它也是无法识别的,得在 pkg 中去掉后面的 const, 前面加上 tolua_readonly 才行。
最后有个隐蔽的: 像有些 c 代码里的 int/*bool*/val 这种声明,tolua 是无法识别的(它可能是先去掉了所有注释,于是不知道 int 和 val 是分离的了),得处理
上面的说法还不够全面,先想到这么多,后面再补。
相关文章推荐
- Unity 3D中ToLua-UGUI使用说明、导入Unity流程、制作登陆界面
- 读《一课经济学》18章有感,中国汽车使用的公平
- VS使用有感——MFC程序移植至其他PC上出现的错误
- windows下使用SCons编译tolua++
- cocos2d-x中使用tolua++导出函数中传递字节流给lua使用的问题
- cocos2dx中注册导出c++函数供lua调用(使用tolua++)
- 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
- CXF-RESTFUL入参是复合对象的使用方法(读asopapi有感)
- 使用tolua++实现C++与LUA相互调用
- linux操作系统:fedora与ubuntu使用后比较有感
- tolua 学习笔记 插件的使用
- Tolua使用笔记一:开始使用Tolua的准备工作与lua文件读取方法
- tolua++使用记录(1)
- 雷柏7100使用一周有感——优缺点
- 项目记录28--unity-tolua框架 lua使用协程
- 如何编译各平台使用的库:以编译tolua为例
- 有感一些常用框架的使用
- 【lua】使用 tolua 实现 lua 与 c++ 交互
- tolua++的使用
- tolua++ mac安装使用