cocos2dx lua学习笔记 <一> quick 3.5把自定义C++类绑定到
请尊重原创 转载请著名出处:http://blog.csdn.net/wushao126/article/details/46660375 工程创建后,找到工程目录下的frameworksruntime-srcClasses,创建一个c++类,我创建的类是 文件名:LuaBindingTest.h #pragma once class LuaBindingTest { public: LuaBindingTest(); ~LuaBindingTest(); void add(long a,long b); void sub(int a,int b); }; 文件名:LuaBindingTest.cpp #include "LuaBindingTest.h" #include "cocos2d.h" USING_NS_CC; LuaBindingTest::LuaBindingTest() { } LuaBindingTest::~LuaBindingTest() { } void LuaBindingTest::sub(int a,int b) { CCLOG("a - b = %d",a - b); } void LuaBindingTest::add(long a,long b) { CCLOG("a + b = %ld",a + b); }
之后在工程目录下的frameworkscocos2d-xtoolstolua文件夹中找到genbindings.py文件夹,备份一份,改名genbindings_binding_test.py,打开此文件,需要修改内容,定位大约在130行之后,找到内容类似 tolua_root = '%s/tools/tolua' % project_root output_dir = '%s/../runtime-src/Classes/auto' % project_root cmd_args = {'myclass.ini' : ('myclass','lua_myclass_auto'), 'cocos2dx_extension.ini' : ('cocos2dx_extension','lua_cocos2dx_extension_auto'), 'cocos2dx_ui.ini' : ('cocos2dx_ui','lua_cocos2dx_ui_auto'), 'cocos2dx_studio.ini' : ('cocos2dx_studio','lua_cocos2dx_studio_auto'), 'cocos2dx_spine.ini' : ('cocos2dx_spine','lua_cocos2dx_spine_auto'), 'cocos2dx_physics.ini' : ('cocos2dx_physics','lua_cocos2dx_physics_auto'), 'cocos2dx_experimental_video.ini' : ('cocos2dx_experimental_video','lua_cocos2dx_experimental_video_auto'), 'cocos2dx_experimental.ini' : ('cocos2dx_experimental','lua_cocos2dx_experimental_auto'), 'cocos2dx_controller.ini' : ('cocos2dx_controller','lua_cocos2dx_controller_auto'), 'cocos2dx_cocosbuilder.ini': ('cocos2dx_cocosbuilder','lua_cocos2dx_cocosbuilder_auto'), 'cocos2dx_cocosdenshion.ini': ('cocos2dx_cocosdenshion','lua_cocos2dx_cocosdenshion_auto'), 'cocos2dx_3d.ini': ('cocos2dx_3d','lua_cocos2dx_3d_auto'), 'cocos2dx_audioengine.ini': ('cocos2dx_audioengine','lua_cocos2dx_audioengine_auto'), 'cocos2dx_csloader.ini' : ('cocos2dx_csloader','lua_cocos2dx_csloader_auto'), }tolua_root 就是ini文件所在目录,过会我们就要在这个目录下创建我们的ini文件。 output_dir 是我们要生成的目标文件所在的文件目录,我把这个修改在classes目录下auto 这是我修改后的文件内容 tolua_root = '%s/tools/tolua' % project_root output_dir = '%s/../runtime-src/Classes/auto' % project_root cmd_args = {'myclass.ini' : ('myclass', } myclass.ini就是接下来要创建的ini文件 随便复制一个ini文件,改名为myclass.ini,打开文件,修改几个参数即可 prefix = myclass target_namespace = (空 表示没有) headers = %(cocosdir)s/../runtime-src/Classes/LuaBindingTest.h (需要绑定c++类的头文件路径)classes = LuaBindingTest (类名) skip = (对lua隐藏的接口) 修改好了之后保存文件。接着要配置环境 找到此目录下的README.mdown文件,打开 按照上面安装好,做好,关于cheetah这个,直接拷贝文件夹,别进入目录内把所有文件散着放到C:Python27Libsite-packages ndk r9b版本以上就好了 环境配置好后 执行 python genbindings_binding_test.py命令 你会在你的output_out 路径上看到了生成的文件,api文件夹,一个hpp,一个cpp。如果咩生成,就要检查下是不是出错环节。 注册 打开AppDelegate.cpp,加入hpp头文件 AppDelegate::applicationDidFinishLaunching方法中,在lua_module_register(L);下,复制刚才生成的hpp中register_all_myclass(L); 这就注册好了。
调用 local p = LuaBindingTest.new(0) OVER (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Reactor和Proactor
- 身份验证 – 来自另一个文件的React-Native反应导航
- Windows下编写批处理脚本来启动和重置Oracle数据库
- c# – 在文档中查找HTML字符串
- ruby-on-rails – 活跃商家 – 未初始化的常量ActiveSuppor
- 设计模式 – 接口隔离原理只是单一责任原则的替代品?
- Tiny210(S5PV210) U-BOOT(四)----Nand Flash原理(1)
- ruby-on-rails – 在Rails应用程序上投放字体的Cloudfront
- Vue form 表单提交+ajax异步请求+分页效果
- ruby-on-rails – 如何通过多个模型设置关联