cocos2d-x 3.0的lua-binding接口导出

在cocos2d/tools/bindings-generator/文件夹下是接口导出的工具,

在cocos2d/tools/tolua/文件夹下是接口定义文件和执行导出工作的sh\bat,有一些官方导出接口用的*.ini文件,还有一个readme文件,里面有介绍如何安装和使用这个工具,我没有到windows下进行验证,请自己查看。而关于mac下的使用方法,readme只提供了一个链接,链接是bindings-generator这个工具的github上的说明文档。然后在这个链接里就有说明这个工具还需要哪些辅助工具:python、pip、PyYAML、Cheetah、android-ndk-r9b

简单记录一下过程:

首先安装python,前面配置cocos2dx时已经安装过了(但从上面的链接里才知道原来mac os本身已经自带了python,自己再装一个居然也没冲突),然后打开终端,输入下面的内容自动安装其他依赖工具:

sudo easy_install pip
sudo pip install PyYAML
sudo pip install Cheetah
然后是ndk-r9b,必须是这个版本,亲测r9d失败。下载链接在这: 64bit ndk-r9b-x86_64


然后写好你要导出的接口的说明文件xxxx.ini放到tolua目录下,具体写法可以参考同目录下的cocos2dx_physics.ini等文件,里面对每个关键字的意义都有说明的。然后我这再摘抄一下别人的链接:

http://www.jiduli.com/?p=530

///////////////////////////////////////////weiwei 2014.02.24
修改.ini文件 用于绑定自定义类
.ini文件
参考例子:cocos2dx引擎根目录/tools/bindings-generator/test/test.ini
cocos2dx引擎根目录/tools/tojs/cocos2dx_extension.ini
cocos2dx引擎根目录/tools/tojs/cocos2dx.ini

.ini中部分参数的用法:
name: 单纯只是名称。
prefix: 最后生成的文件都会以这个命名前缀,如 prefix.cpp, prefix.hpp, prefix_api.js
classes: 你的所需转换的类的名称,必须是所导入的头文件中所有的类,这里可以使用正则表达式来加入多个类,参考cocox2ds.ini。
extra_arguments: 一些接口所需的系统参数。如clang包,android ndk包的引入所需的系统参数在此添加,写法可以参照以上三个.ini都有。
headers: 你所需要绑定的头文件路径。
target_namespace:命名空间。最后生成的JS文件的类,会以这个命名空间开头。例如你的类为sqlite,命名空间为cocos2dx,那么最后生成的就是cocos2dx.sqlite。
rename_functions:可以将你要绑定的方法的名称更改成你所要的。可以更改多个,用逗号隔开,写法参照 SqliteCpp::[sqlite3_execCpp=sqlite3_exec],这个就是将SqliteCpp中的sqlite3_ execCpp方法重命名为sqlite3_exec方法。
rename_classes :同上,重命名类。
skip :跳过你所不需要绑定的方法和类,于是就不生成。


写好后用文本工具打开一下tolua目录下的genbindings.sh,拖到最下面,把最后几行生成cocos2dx导出接口的代码屏蔽,然后加上自己刚写的xxxx.ini文件

最后再打开终端,cd到tolua目录下,输入

export NDK_ROOT=/Users/xyz/android-ndk-r9b
./genbindings.sh

注意,如果你是从旧版cocos升级到3.0的,这里可能报parse heads error,那有可能是你ini文件写得有问题,或者导出类的头文件里include的那些路径和新版的cocos2d-x 3.0的路径结构不匹配,注意检查。


你可能感兴趣的:(cocos2d-x)