,,,,虽然网上很多关于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个文件
,,,,到此我们所需要的文件都齐全了! ! ! ! ! ! !
,,,,关于如何调用在下篇文章讲解!
,,,,如有不足之处,请大家指出,一起交流成长!