test路徑:/cocos2d-2.1beta3-x-2.1.0/tools/cxx-generator
"熱情、務實、專業(yè)、創(chuàng)新”我們不忘初心,砥礪前行,實在做人,認真做事,始終如一的專注企業(yè)互聯(lián)網(wǎng)品牌建設與網(wǎng)絡營銷推廣服務。品牌網(wǎng)站設計本著讓客戶滿意的目標,幫助企業(yè)通過互聯(lián)網(wǎng)創(chuàng)造價值.成都創(chuàng)新互聯(lián)公司全體員工將通過不懈努力,力爭成為客戶在信息化領域中值得長期信賴的合作伙伴。主要參考的還是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進入該網(wǎng)站點擊右上角的Download按鈕進入下載頁面。下載的時候會有很多版本供你選擇,我選擇的是,因為我的系統(tǒng)版本是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,如果配置路徑?jīng)]有問題終端會提示:
Errors in parsing headers:
1. location = details = "argument unusedduring compilation: '-nostdinc++'"> 警告不用管,只要沒有錯誤就行。 最后會生成一個simple_test_bindings文件夾包含如下文件: 至此綁定過程就結束了,下面是將生成的文件放到項目中測試。 二、運行test 1、將這兩個文件夾添加到項目的libs文件夾下。 2、修改.cpp文件的注冊函數(shù): 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文件中找個適當?shù)牡胤秸{(diào)用測試: var myClass=newts.SimpleNativeClass(); varmyStr=myClass.returnsACString(); var label = cc.LabelTTF.create(myStr, "Helvetica", 20.0); 三、分析.ini配置文件 1.prefix: 項目的前綴. 對target vm語言來說必須是有效的標示符。通常情況下, 這個名字總是被混合在類名和函數(shù)名之間,因為生成的是自由的函數(shù),所以為了避免名字的沖突,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調(diào)用的事件,以ClassName#functionName形式定義的標示符清單。 4.extra_arguments: 額外參數(shù)傳遞給clang接口。重要的是你能想到這些參數(shù)傳遞給“complier”,所以將你能用到的都添加到這里。如果你想綁定 c++代碼,確保在最后你添加了“-x c++”參數(shù)去解析“.h”文件。否則將你的頭文件命名為“.hpp”。 5.headers: 需要解析的頭文件的清單,通常你將添加一個頭文件然后將其他剩下的文件導入到這個頭文件中轉(zhuǎn)換。 6.classes: 將被解析的類文件,現(xiàn)在僅僅支持字符串,將來會支持表達式。 7.functions: 從自由函數(shù)中分離出來的部分,和類一樣,將來會提供正規(guī)的表達式。 8.skip: 不參與binding的Classes::functions或者僅僅是functions的部分。 另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享文章:cocos2d-xjs綁定test-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/episs.html