• cxx-generator JS绑定工具


    第一部分:配置安装环境

    cxx-generator是由Zynga工程师贡献的C++代码绑定到js工具。用于将cocos2d-x 的c++代码,生成相应的js绑定代码(由c++写成),然后将这些函数注册到spidermonkey的解释器中。通过将js代码映射成c++代码,就可以使用相应的js接口了。

    所需要的环境

    mac os x系统 

    • python2.7
    • py-yaml
    • cheetah (for target language templates)
    • libclang, from clang 3.1

    前三个可以通过macports自动安装

    macports下载地址

    http://www.macports.org/install.php

    注意选择适合你的系统版本,另外该页也注明了安装中常见的系统问题,一共四条。

    在安装macports时,有可能会卡在最后一分钟,那么需要重启后断网安装即可。

    在终端上运行此命令,安装前三个软件

    sudo port install python27 py27-yaml py27-cheetah

    安装对网络有一定要求,部分地区可能要自备梯子
     
     
    下载clang
     
    http://llvm.org/releases/3.1/clang+llvm-3.1-x86_64-apple-darwin11.tar.gz
     
     
    下载NDK
    绑定例子中,用到了部分c++标准库接口,所以需要提供相应代码实现,工具中,采用ndk实现。不太明白为什么没有直接用xcode中的标准库。
     
    http://dl.google.com/android/ndk/android-ndk-r8d-darwin-x86.tar.bz2
     
    第二步,生成绑定代码
     
    复制 userconf.ini.sample 和 user.cfg.sample 并去掉sample后缀
     
    添加自己的路径,我的是多系统所以路径有点特别
     
    //user.cfg
    PYTHON_BIN=/opt/local/bin/python2.7
     
    //userconf.ini 
    [DEFAULT]
    androidndkdir=/Volumes/data/Mac_OS_X/android-ndk-r8b
    clangllvmdir=/Volumes/data/Mac_OS_X/clang+llvm-3.1-x86_64-apple-darwin11
    cxxgeneratordir=/Volumes/data/Workspace/cocos2d-2.1beta3-x-2.1.0/tools/cxx-generator
     
     
    最后,由终端运行
    sudo ./test.sh
     
    生成simple_test_bindings文件夹,下面就是绑定好的c++代码了。
     
     
    第三步,集成测试
     
    懒省事直接拿TestJavaScript例子开刀,倒入两个文件夹simple_test和simple_test_bindings
     
    在AppDelegate.cpp中,倒入头文件
    #include "autogentestbindings.hpp"
    并注册
    sc->addRegisterCallback(register_all_autogentestbindings);
     
    在tests-boot-jsb.js中,添加测试代码

    var myClass=new ts.SimpleNativeClass();

    var myStr=myClass.returnsACString();

    cc.log(myStr);

    控制台输出

     

    this is a c-string

     

    参考文献

    https://github.com/funkaster/cxx-generator

    http://www.macports.org/install.php

    http://cn.cocos2d-x.org/bbs/forum.php?mod=viewthread&tid=10226&extra=page%3D1

  • 相关阅读:
    那些ubuntu创建用户踩过的坑
    Build tools
    version control(以git为例)讲解
    URI和URL的区别
    HTTP解析过程心得
    函数式编程(functional programming)
    cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据
    cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if
    cb43a_c++_STL_算法_删除_(1)remove_remove_if
    cb42a_c++_STL_算法_替换_replace
  • 原文地址:https://www.cnblogs.com/zhepama/p/3302707.html
Copyright © 2020-2023  润新知