首先按照参考资料来,把环境都配置好,包括python、yaml、cheetah、ndk-r9b(一定要r9b);
-
到cocos的目录,找到tolua文件夹
-
复制一份*.ini的配置文件,对其作出修改
-
复制genbinding.py,然后对其作出修改
运行自定义后的genbinding.py文件
-
如无意外,会在输出目录输出lua_CUpdater_auto.cpp
- 接入到C++中即可,接入参考资料: Cocos2d-Lua 3.12 生成绑定 导出C++类给LUA调用( tolua genbindings.py 的使用)
注意:避免在头文件中引用外部头文件,如CUpdater中,有这样的引用,
那么生成binding的时候,会报错,说找不到curl.h文件。应该把这些外部头文件引用放在cpp中实现。如下
更多参考:
- cocos2dx-3.x 导出自定义类到 lua 过程详解
- cocos2d-x 3.0rc0 - bindings-generator 问题与解决
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践
附一份切换系统环境变量的批处理,方便切换不同的ndk
@echo off
echo ---------------------------------------------------
echo 请输入要转换的环境:
echo 1为NDK-r10d(打包用)
echo 2为NDK-r14b(creator)用
echo 3为NDK-r9b(Lua-binding)用
echo ---------------------------------------------------
set /p option=
if %option% EQU 1 goto switchToR10d
if %option% EQU 2 goto switchToR14b
if %option% EQU 3 goto switchToR9b
echo 输入错误,退出
goto finish
:switchToR10d
setx ANDROID_NDK_HOME D:\Android\android-ndk-r10d
setx ANDROID_NDK_ROOT D:\Android\android-ndk-r10d
setx NDK_ROOT D:\Android\android-ndk-r10d
echo 转换完毕,已转换到r10d
goto finish
:switchToR14b:
setx ANDROID_NDK_HOME D:\Android\android-ndk-r14b
setx ANDROID_NDK_ROOT D:\Android\android-ndk-r14b
setx NDK_ROOT D:\Android\android-ndk-r14b
echo 转换完毕,已转换到r14b
goto finish
:switchToR9b:
setx ANDROID_NDK_HOME D:\Android\android-ndk-r9b
setx ANDROID_NDK_ROOT D:\Android\android-ndk-r9b
setx NDK_ROOT D:\Android\android-ndk-r9b
echo 转换完毕,已转换到r9b
goto finish
:finish:
pause