摘要:借助GYP將libpomelo連接到Cocos2d-x項目并使項目能與服務端成功連接。
配置:OS X 10.9.4 + Xcode 6.0 + Cocos2d-x-3.2
終端轉到要安裝GYP項目的目錄后,執行如下命令:
$ svn checkout http://gyp.googlecode.com/svn/trunk/ gyp-read-only也可以使用云盤下載(2014-06-15)。
$ sudo -i回車后需要輸入本機用戶密碼(就是電腦登陸密碼)。輸入時不會有視覺反饋(不會顯示出星號)。
$ ./setup.py install$ git clone https://github.com/NetEase/libpomelo.git也可以使用云盤下載(2014-06-15)。
$ ./pomelo_gyp $ xcodebuild -project pomelo.xcodeproj$ ./pomelo_gyp -DTO=ios$ ./build_ios$ ./pomelo_gyp -DTO=ios$ ./build_iossim》 可能出現的錯誤
Q | 錯誤提示:
xcodebuild: error: SDK "iphonesimulator6.1" cannot be located.A | 解決方法:
打開build_iossim文件,將模擬器版本改為所需版本。
打開生成的pomelo.xcodeproj文件,編譯運行。
對libpomelo進行編譯后會產生幾個靜態庫文件。如果想要同時針對多平臺進行開發,那么可以將針對不同平臺的同名靜態庫文件打包在一起。
編譯所生成的靜態庫文件有以下三種,分別放在如下文件夾的子文件夾中:
libpomelo->build下的libpomelo.alibpomelo->deps->jansson->build下的libjansson.alibpomelo->deps->uv->build下的libuv.a例如文件libpomelo.a所處的目錄結構如下
通過如下命令可以將圖片中藍色選中的兩個文件合并打包到新的路徑下。
$ lipo -create [filePath1] [filePath2] -output [pathOfNewFile]靜態庫文件打包后的效果如下圖:
在項目中新建一個lib文件夾,將合成的靜態庫文件統一放進去。對于項目的其他部分,只需保留如下的幾個文件夾文件:
libpomelo->includelibpomelo->deps->jansson->srclibpomelo->deps->uv->include處理后的目錄結構示例如下:
Cocos2d-x項目的創建參考Mac下搭建Cocos2d-x-3.2的開發環境。
在XCode中右擊項目,Add Files to “XXX”,按下圖添加libpomelo文件夾:
點擊項目的Target,選擇Build Phases選項卡,找到Link Binary With Libraries,
點擊+,點擊Add Other…,
將導入的libpomelo項目中三個靜態文件添加進去。
切換到Build Settings選項卡,找到Search Paths條目,在User Header Search Paths和Library Search Paths中分別加入3項,分別是libpomelo文件夾下include,deps->jansson->src和deps->uv->include這三個文件夾的絕對路徑。
可以采用相對路徑的方式添加,將以下三行加入``即可:
${PROJECT_DIR}/libpomelo/include${PROJECT_DIR}/libpomelo/deps/uv/include${PROJECT_DIR}/libpomelo/deps/jansson/src${PROJECT_DIR}是Xcode提供的環境變量,代表項目所在路徑。
Tip:為了獲取文件夾的絕對路徑,先將項目中的文件夾用Finder打開,再將文件夾拖動到終端,即可。
同樣在Search Paths條目中,找到Library Search Paths項,加入上述三個路徑。
在項目中添加一段代碼來驗證libpomelo已經安裝成功。本例所使用的服務器端為chatofpomelo-websocket。
$ git clone https://github.com/NetEase/chatofpomelo-websocket.git$ sh npm-install.sh在終端進入chatofpomelo-websocket項目下的game-server文件夾。執行:
$ node app在HelloWorldScene.cpp文件中添加頭文件
#include "pomelo.h"在init()函數中添加如下代碼
/*向服務器請求連接*/const char * ip = "127.0.0.1";int port = 3014; //服務器端chatofpomelo-websocket為客戶端提供的連接端口號。pc_client_t * pClient = pc_client_new();struct sockaddr_in address;memset(&address,0,sizeof(struct sockaddr_in));address.sin_family = AF_INET;address.sin_port = htons(port);address.sin_addr.s_addr = inet_addr(ip);if (pc_client_connect(pClient, &address)){    CCLOGINFO("***** Connection Failed! *****");    pc_client_destroy(pClient);}else{    CCLOGINFO("***** Connection Succeed! *****");    pc_client_destroy(pClient);}代碼可參考pomelo客戶端開發。
若運行項目后在output中輸出cocos2d: ***** Connection Succeed! *****,說明libpomelo配置成功。
》 可能出現的錯誤
Q | 錯誤提示:
Undefined symbols for architecture x86_64:"_FSEventStreamCreate", referenced from:_uv__fsevents_init in libuv.a(fsevents.o)"_FSEventStreamInvalidate", referenced from: _uv__fsevents_close in libuv.a(fsevents.o)"_FSEventStreamRelease", referenced from: _uv__fsevents_close in libuv.a(fsevents.o) "_FSEventStreamScheduleWithRunLoop", referenced from: _uv__fsevents_schedule in libuv.a(fsevents.o) "_FSEventStreamStart", referenced from: _uv__fsevents_schedule in libuv.a(fsevents.o) "_FSEventStreamStop", referenced from: _uv__fsevents_close in libuv.a(fsevents.o)ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)A | 解決方法:
針對Mac,在
Build Settings選項中的Linking條目下的Other Linker Flags中添加-framework CoreFoundation -framework CoreServices針對iOS,不需要添加上述Flags。
完稿于2014/9/23。
?
原文鏈接:http://m.survivalescaperooms.com/tangyikejun/p/3988724.html
新聞熱點
疑難解答