protobuf2.5在iOS上編譯及cocos2dx混合使用的問題

項目代碼裏使用了protobuf做爲協議層的的編碼解碼庫, 因此須要編譯成arm系列架構的靜態庫供遊戲使用. 在編譯過程當中十分坎坷,首先,protobuf的源碼在編譯時若是直接使用configure生成的makefile編譯會有error,後來在網上找到了https://gist.github.com/BennettSmith/7150245這個build腳本,終於build出來了一個能夠用的靜態lib(須要注意的是在build過程當中會訪問google code和Github去下載源碼包和補丁,而這兩個網站又由於gfw的問題時好時壞,因此若是build過程當中遇到問題,請先確認是不是gfw致使的問題)。ios

後來在cocos2dx工程中引用該lib的時候發現編譯沒有問題 可是連接的時候就會報各類莫名其妙的連接失敗,找不到符號表的錯誤。追查了好久發現cocos2dx的project_creator生成的工程的llvm編譯器屬性設置裏使用c++標準和標準庫默認是: 在此輸入圖片描述c++

可是protbuf裏由於代碼裏使用一些c++11新增特性的功能,因此編譯時就使用了以下配置: 在此輸入圖片描述 所以兩個庫使用的針對c++語言的編譯器屬性設置不一樣致使出現瞭如上的連接問題,解決辦法也很簡單,就是把全部以源碼方式引入的第三方庫(包括cocos2dx)的編譯器的配置都改成如上的c++11和libc++就ok了。git

另外,網上也有人採用直接在工程中引入protobuf源碼的方式來解決這個問題,我通過測試也是可行的,沒有采用這種方式的緣由在於這種方式若是要build一個protobuf-lite須要分析它的makefile來確認要生成protobuf-lite到底只須要那些文件,而因爲咱們本身項目時間有限,因此我就沒有過多的嘗試,只是確認了這種方式也是一種可行的方案,具體操做步驟再也不贅述,附連接地址: http://stackoverflow.com/questions/10277576/google-protocol-buffers-on-iosgithub

相關文章
相關標籤/搜索