test路径:/cocos2d-2.1beta3-x-2.1.0/tools/cxx-generator
"热情、务实、专业、创新”我们不忘初心,砥砺前行,实在做人,认真做事,始终如一的专注企业互联网品牌建设与网络营销推广服务。品牌网站设计本着让客户满意的目标,帮助企业通过互联网创造价值.成都创新互联公司全体员工将通过不懈努力,力争成为客户在信息化领域中值得长期信赖的合作伙伴。主要参考的还是readme这个问题件,里面写的很详细:
https://github.com/funkaster/cxx-generator/blob/master/README.md#test
在终端中输入:sudo port install python27py27-yaml py27-cheetah
如果你没有安装python 会提示sudo: port: command not found
这时你需要下载macports http://macports.org进入该网站点击右上角的Download按钮进入下载页面。下载的时候会有很多版本供你选择,我选择的是,因为我的系统版本是10.7.5的而2.1.2是最高版。安装macports 有几点注意,要求
1、mac中安装了Xcode 4.4以上版本,
2、安装了Command Line Developer Tools,
3、接受Xcode的用户许可或者运行命令xcodebuild–license。
安装完毕后先运行sudo port –v selfupdate命令更新到最新版本,然后运行:sudoport install python27 py27-yaml py27-cheetah
没问题的话终端提示
---> Updating database of binaries: 100.0%
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.
安装成功。
接下来配置test文件夹下的文件
1.去掉userconf..ini,和user.cfg文件的.sample后缀。
2.配置user.cfg文件
PYTHON_BIN=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7(这是我的路径)
3.配置 userconf.ini 文件:
[DEFAULT]
androidndkdir=/Users/wangjingjing/cocos2d-x/android-ndk-r8b
clangllvmdir=/Users/wangjingjing/cocos2d-x/clang+llvm-3.1-x86_64-apple-darwin11
cxxgeneratordir=/Users/wangjingjing/cocos2d-x/cocos2d-2.1beta3-x-2.1.0/tools/cxx-generator
4.运行 ./test.sh,如果配置路径没有问题终端会提示:
Errors in parsing headers:
1. location = details = "argument unusedduring compilation: '-nostdinc++'"> 警告不用管,只要没有错误就行。 最后会生成一个simple_test_bindings文件夹包含如下文件: 至此绑定过程就结束了,下面是将生成的文件放到项目中测试。 二、运行test 1、将这两个文件夹添加到项目的libs文件夹下。 2、修改.cpp文件的注册函数: voidregister_all_autogentestbindings(JSContext* cx, JSObject* obj) { jsval nsval; JSObject *ns; JS_GetProperty(cx, obj, "ts",&nsval); if (nsval == JSVAL_VOID) { ns = JS_NewObject(cx, NULL, NULL, NULL); nsval = OBJECT_TO_JSVAL(ns); JS_SetProperty(cx, obj, "ts",&nsval); } else { JS_ValueToObject(cx,nsval, &ns); } obj = ns; js_register_autogentestbindings_SimpleNativeClass(cx, obj); } 如果直接修改test.ini中的target_namespace =ts就可以了,绑定的时候你的这段代码会自动生成的。 3、在AppDelegate中注册: 先导入#include "autogentestbindings.hpp" 文件 注册sc->addRegisterCallback(register_all_autogentestbindings); 4、在hello.js文件中找个适当的地方调用测试: var myClass=newts.SimpleNativeClass(); varmyStr=myClass.returnsACString(); var label = cc.LabelTTF.create(myStr, "Helvetica", 20.0); 三、分析.ini配置文件 1.prefix: 项目的前缀. 对target vm语言来说必须是有效的标示符。通常情况下, 这个名字总是被混合在类名和函数名之间,因为生成的是自由的函数,所以为了避免名字的冲突,scripte将生成形如${prefix}.cpp and${prefix}.hpp文件作为结果。 2.events: a list of identifiers in the formof ClassName#functionName that are events to be called from the native world tothe target vm. 3.被本地的target vm调用的事件,以ClassName#functionName形式定义的标示符清单。 4.extra_arguments: 额外参数传递给clang接口。重要的是你能想到这些参数传递给“complier”,所以将你能用到的都添加到这里。如果你想绑定 c++代码,确保在最后你添加了“-x c++”参数去解析“.h”文件。否则将你的头文件命名为“.hpp”。 5.headers: 需要解析的头文件的清单,通常你将添加一个头文件然后将其他剩下的文件导入到这个头文件中转换。 6.classes: 将被解析的类文件,现在仅仅支持字符串,将来会支持表达式。 7.functions: 从自由函数中分离出来的部分,和类一样,将来会提供正规的表达式。 8.skip: 不参与binding的Classes::functions或者仅仅是functions的部分。 另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻名称:cocos2d-xjs绑定test-创新互联
分享地址:http://lswzjz.com/article/episs.html