Cocos2d-x JSB 自动绑定bindings-generator (以下简称B-G) 使用心得

文章转载自:http://www.cocoachina.com/bbs/read.php?tid=177904


B-G 是什么?
  当使用JSB的时候,如果你想要使用的C++的类或者方法没有在已有JSB中被绑定,这时候,就可以使用B-G。 它可以生成相对应的C++的绑定文件和相对应的JS接口,届时,你只需要调用生成的相对应的JS接口,它将自动转换成原来的C++的类,相当于直接调用原来的C++方法或者类。

B-G生成主要流程:
准备好必要的工具 -> 准备好你要绑定的C++的文件 -> 写生成文件的.ini配置文件和.sh 脚本程序 -> 运行 .sh 脚本文件 -> 生成绑定文件 -> 测试绑定文件直至可以正常使用

必要的工具:
cocos2d-x引擎http://cocos2d-x.org/projects/cocos2d-x/wiki/Download
python 2.7http://www.python.org/download/   (目前引擎里面的bindings-generator只支持python2.7版本)
py-ymal: http://pyyaml.org/wiki/PyYAML  (这是python的一个第三方包,下载页有不同系统的安装方式,可以参考。generator.py会调用到这个包。)
cheetahhttp://www.cheetahtemplate.org/ (这也是python的一个第三方包,一个模板,generator.py会调用到这个包,安装方式跟py-ymal相同。)
libclang:http://llvm.org/releases/3.1/clang+llvm-3.1-x86_64-apple-darwin11.tar.gz (生成的时候需要用到的lib,注意master分支也就是2.2.2这个版本的引擎用3.1的,develop分支也就是3.0版本的引擎用3.3的)
Android NDK:http://dl.google.com/android/ndk/android-ndk-r8c-darwin-x86.tar.bz2 (测试的时候使用的v2.2.2用的r8c, 现在的3.0beta版需要用r9b)

.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: 你的所需转换的类的名称,必须是所导入的头文件中所有的类,这里可以使用正则表达式来加入多个类,参考cocox2dx.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 :跳过你所不需要绑定的方法和类,于是就不生成。

.sh文件:主要调用程序,用来读取.ini配置文件和写部分参数。
参考例子:cocos2dx引擎根目录/tools/tojs/genbindings.sh 
                    cocos2dx引擎根目录/tools/bindings-generator/test/test.sh

下面这句话便设定了通过调用generator.py来调用你的配置文件,并在你所设定的敌方生成你需要的绑定文件。 set -x LD_LIBRARY_PATH=${CLANG_ROOT}/lib $PYTHON_BIN ${CXX_GENERATOR_ROOT}/generator.py ${TO_JS_ROOT}/sqlite.ini -s sqlite -o ${TO_JS_ROOT}/sqliteBinding
写好.ini和.sh后,在cmd执行 sudo 你的.sh路径 ,便可以在你配置的地方找到你生成的文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值