第一部分:配置安裝環境

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