更新(2014-2-13)cocos2dx 3.0 beta2 JSB 绑定

先说下JSB这个东西,因为要慎用啊。JSB是为了做多平台。目前JSB调试很不方便,官方都推荐在html5里写好了,再拿到JSB里直接运行,打包。所以那些还在JSB绑定自己c++类的同学就洗洗睡吧,因为绑了html5用不了。如果不用html5,那就JSB没必要用了,因为可以直接在c++里调用脚本。所以请要用JSB的慎用啊。坑很多。



现在记录下自己这几天整理的问题。希望需要的人可以借鉴,大牛可以指点评论。

先说下我现在的环境:

系统:MAC OS 10.9

引擎版本:cocos2d-x 3.0beta2

如果要生成自己的c++类绑定到js,需要一些必须的工具。我目前的环境是MAC OS,看官方说目前windows不支持,因为对clang 3.3支持不太好。

下面列出这些工具。

一:必要工具

https://github.com/cocos2d/bindings-generator

这个是生成c++绑定js的工具。在引擎包里面的tool目录下有。不过我还是自己下了个。。。

http://www.macports.org/install.php#sthash.T86dQGFB.dpuf

这个不太清楚是干嘛用的。。。先下下来。

终端里执行下这句话,大概意思是给xcode授权。

xcodebuild -license

再执行下面命令,意思是更新,下载python 2.7。现在3.0beta只支持2.7,然后下载yaml和cheetah ,这都是python2.7需要的包。可以单独下载。

sudo port -v selfupdate 
sudo port install python27 py27-yaml py27-cheetah 

接下来下载clang 3.3,注意2.2支持的是3.1 ,3.0版本需要3.3,而现在3.3在windows上跑得不是很好。所以尝试用3.0的同鞋,最好在mac下试。

http://llvm.org/releases/download.html#3.3


接下来就是DNK了。下载比R9b还新的就行。参考官网数据。

 http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86_64.tar.bz2

二:开始

我先说下我对c++生成js的大致看法。生成你的c++为JS时其实也需要编译,这让我想起了打静态类库的包。比较蛋疼~所以需要用NDK来做c++的头文件引用,不然在生成

时会出现编译不通过之类的问题。

生成绑定文件,我们需要改4个文件。

我列下文件目录

test.ini
test.sh
user.cfg
user.cfg.sample
userconf.ini
userconf.ini.sample

这些文件都在bindings-generator-master这个里面的test文件夹里。这是这个生成工具自带的一个测试。

另外两个.sample是系统提供的模板,我们复制下,把后缀去掉就行。

	androidndkdir=/Users/vvvsnoopy/Documents/android/android-ndk-r9b
	clangllvmdir=/Users/vvvsnoopy/Documents/Tool/clang+llvm-3.1-x86_64-apple-darwin11
	cxxgeneratordir=/Users/vvvsnoopy/Documents/Tool/bindings-generator-master
	PYTHON_BIN=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7

这是两个配置文件的路径,对应改成自己的就行。


下面看test.ini。

extra_arguments = -D_SIZE_T_DEFINED_ %(clang_headers)s %(clang_flags)s -I/Users/vvvsnoopy/Documents/android/android-ndk-r9b/platforms/android-14/arch-ar

这是两个关键属性,基本上改这两个就行。

extra_arguments指明路径和命令,命令参照cocos2d引擎库tool里面的tojs里面参数写。我这里说明下路径。%()s 这是引用一个变量。-I是指明这个路径。由于要要编译c++文件,所以对一些库的引用路径都在这里。比如ndk的c++库,还有cocos2dx引擎库。

(这里需要说明的是,要生成的话需要我发现需要改引擎库里里面的一个配置文件的宏定义。CCPlatformConfig.h在这个文件里大概53行。默认机型,改成安卓的。)

#define CC_TARGET_PLATFORM             CC_PLATFORM_ANDROID

如果不改成安卓的,编译的时候最出错。找不到这个宏之类的,如果改成ios会出现引擎opengl的库引擎不到。因为我们是引用ndk的c++库的啊。找不到正常。所以我自己是换成安卓的了。这么一想,在生成不同开始环境的时候,应该引擎自己做过些处理。来改变宏,不然多平台引用包有问题。


headers是你要编译的.h文件

headers =Users/vvvsnoopy/Documents/Tool/bindings-generator-master/test/simple_test/simple_class.h


下面就是test.sh文件了。如果你改了ini,我相信.sh你也容易改的。把里面的4个路径改下,再把最下面的引用路径改下就ok啦。

最后一步就是执行.sh。注意执行的时候记得加sudo ./test.sh。不然有时候会生成不了,没有权限,又不报错。。我这里蛋疼了。。。

目前终于全部解决了。可以生成所有的文件,注意点是,之前用的beta 。现在要用beta2。因为里面有个libclang。需要用到。而且beta里面少东西,我也是通过官方人员才知道的。所以用beta2。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值