快速cocos2dx 3.3 rc1如何Lua调用自定义c++类(一)- - - - - -生成桥接代码

  

,,,,虽然网上很多关于Lua调用自定义c++类的文章,但不知道为什么,一到自己去实践,总是遇见这样那样的问题,造成失败。让我都怀疑文章的正确性了…有些因为细节原因,而文章又没提!踩了无数的坑,昨天终于成功了,今天迫不及待写篇文章与大家分享!

,,,,如果对Lua与c++如何交互不怎么清楚的朋友,可以看下这篇文章:

,,,,【木头Cocos2d-x 026】Lua篇(第01章):让Lua和c++牵手

,

,,,,如果版本不是3. x的,用以前版本的可以看下这篇文章:

,,,, Cocos2d-x下Lua调用自定义c++类和函数的最佳实践

,

,,,,这篇文章详细介绍了几种Lua调用c++的方法,最终说明了cocos2dx 3。x用

,并解压到https://raw.github.com/dumganhar/my_old_cocos2d-x_backup/download/downloads/Cheetah.zip

,,,,

,

,,,,官方文档:如何使用bindings-generator自动生成lua绑定

以官方文档CustomClass类为例,步骤如下:

,,

,,,, 1。在框架/runtime-src/类/目录下,创建CustomClass类

,,,,框架/runtime-src/类/CustomClass。h

 # include “CustomClass.h”
  CustomClass: CustomClass ()
  {
  }
  CustomClass:: ~ CustomClass ()
  {
  }
  bool  CustomClass:: init ()
  {
  ,,,return 真实;
  }
  int  CustomClass: foo (int 我)
  {
  return 才能;小姐:+,100;
  }

, 2。在框架/cocos2d-x/工具/tolua/目录下,创建cocos2dx_custom。ini文件

[cocos2dx_custom]   prefix =cocos2dx_custom   target_namespace =cc   android_headers =, -我% (androidndkdir) s/平台/android-14/arch-arm/usr/include 我% (androidndkdir) s/资源/cxx-stl/gnu-libstdc + +/4.7/libs/armeabi-v7a/include 我% (androidndkdir) s/资源/cxx-stl/gnu-libstdc + +/4.7/include 我% (androidndkdir) s/资源/cxx-stl/gnu-libstdc + +/4.8/libs/armeabi-v7a/include 我% (androidndkdir) s/资源/cxx-stl/gnu-libstdc + +/4.8/包括   android_flags =-D_SIZE_T_DEFINED_   clang_headers =, -我% (clangllvmdir) s/lib/叮当声/3.3/include    时间=clang_flags  -nostdinc  -x  c++,化c++ 11, -U  __SSE__   cocos_headers =, -我% (cocosdir) s 我% (cocosdir) s/cocos 我% (cocosdir) s/可可/平台/android   cocos_flags =-DANDROID   cxxgenerator_headers =extra_arguments =, % (android_headers) s  % (clang_headers) s  % (cxxgenerator_headers) s  % (cocos_headers) s  % (android_flags) s  % (clang_flags) s  % (cocos_flags) s  % (extra_flags)   headers =, % (cocosdir) s/. ./runtime-src/类/CustomClass.h   classes =CustomClass   skip =rename_functions =rename_classes =remove_prefix =classes_have_no_parents =base_classes_to_skip =abstract_classes =script_control_cpp =,没有

,,,,,这是最简单的ini文件了,看起来很多,其实最主要的是修改以下几句,其他几乎不用改变。

[cocos2dx_custom]   prefix =cocos2dx_custom   target_namespace =cc   headers =, % (cocosdir) s/. ./runtime-src/类/CustomClass.h   时间=classes  CustomClass

,,,,,具体含义看官方文档吧,这里就不说了,

,,,, 3。在框架/cocos2d-x/工具/tolua/目录下,修改脚本

,,,,我把genbindings.py拷贝了一份把名字改成genbindings_custom。py,修改以下代码:

cmd_args =, {“cocos2dx_custom.ini”,: (“cocos2dx_custom”,“lua_cocos2dx_custom_auto”),}

,,,,这样就只会编译这个一个文件,节约时间! ! !

,,,, 4。在框架/cocos2d-x/工具/tolua/目录下,运行脚本

,,,,在框架/cocos2d-x/工具/tolua目录下运行cmd,然后输入命令Python genbindings_custom.py

成功执行genbindings。py脚本后,会在目录下,生成以下2个文件

,,,,到此我们所需要的文件都齐全了! ! ! ! ! ! !

,,,,关于如何调用在下篇文章讲解!

,,,,如有不足之处,请大家指出,一起交流成长!

快速cocos2dx 3.3 rc1如何Lua调用自定义c++类(一)- - - - - -生成桥接代码