標籤:android http color io os 使用 ar java strong
如果你使用NDK r10構建Cocos2d-x v3.2,將會遇到所有測試案例編譯錯誤以及Lua測試案例連結錯誤。
1. 編譯錯誤
錯誤資訊是:
| 12345678 |
/Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.cpp:94:23: error: return type of out-of-line definition of ‘cocos2d::BundleReader::tell‘ differs from that in the declarationssize_t BundleReader::tell() ^/Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.h:90:14: note: previous declaration is herelong int tell(); |
編譯錯誤在這裡修複,對此我們很抱歉。
2. 連結錯誤
修複編譯錯誤之後,當你建立Lua測試案例或者新的Lua工程時,你將遇到連結錯誤。
我已經在Android問題反饋系統中提交這個錯誤。NDK開發人員承認這是NDK r10的一個bug。以下提供兩種解決辦法:
1)使用命令列"-nodefaultlibs -lstdc++ -latomic -ldl -lm -lc -lcompiler_rt_static"將組建檔案改為libgcc.a。
但是,因為我們使用獨立的工具鏈,所以改變組建檔案對Cocos2d-x是行不通的。
2)使用libc++_shared.so,然後在Application.mk中添加LIBCXX_USE_GABIXX:=true,強制使用gabi++重建libc++。
這個方法需要使用共用庫,還需要修改Cocos2dxActivity.java來載入依賴的共用庫。我們不希望做這樣的修改,因為:
* 我們沒有測試過共用庫,所以我們也沒有使用過共用庫
* 使用共用庫將比使用靜態庫產生的.apk大0.13M
* Google開發人員將在下一代NDK中修複這一問題
總結
我們建議您使用NDK r9d,不使用NDK r10。如果你使用NDK r10,如下步驟可以幫你解決上述兩個問題:
1)聲明BundleReader::tell()時,將long int改為ssize_t。查看更多詳細資料請查看這個pr。
2)將APP_STL:=c++_static改為APP_STL:=c++_shared。在Application.mk中添加LIBCXX_USE_GABIXX:=true, 然後修改你的Java啟用代碼來載入libc++_shared.so。 查看更多詳細資料請查看這個pr。
來源網址:http://cocos2d-x.org/news/307
使用NDK r10構建Cocosd-x v3.2時編譯和連結錯誤的解決辦法