Cocos2d-x專案建立之 原生ios專案匯入Cocos2d框架
上一章: Cocos2d-x專案建立之 靜態庫生成
第一步,“Cocos2d-X原始碼”和“預編譯靜態庫”準備
Cocos2d-X原始碼可在官網下載,如:
Cocos2d-X 預編譯靜態庫生成方法: Cocos2d-x專案建立之 靜態庫生成
第二步,原生iOS專案匯入“Cocos2d-X原始碼”和“預編譯靜態庫”
1.預編譯靜態庫匯入:(本方法只匯入“模擬器Debug”環境的靜態庫,其他環境靜態庫匯入方法雷同!)
如圖:
2.Cocos2d-X原始碼包匯入,Cocos2d-X原始碼包貼上複製放在 MyFirst專案 的一級目錄中:(Cocos2d-X原始碼包,用於cocos專案開發過程中使用,相當於將官方API整合在工程本地檔案中。用於開發過程中,程式碼API呼叫!
如圖:
3.Cocos2d-X原始碼包引用:(Cocos2d-X原始碼包,用於cocos專案開發過程中使用,相當於將官方API整合在工程本地檔案中。用於開發過程中,程式碼API呼叫!)
(1)、[project] -- [Build Setting] -- [Header Search Paths]:
$(SRCROOT)/cocos2d-x-3.10
$(SRCROOT)/cocos2d-x-3.10/cocos
$(SRCROOT)/cocos2d-x-3.10/cocos/base
$(SRCROOT)/cocos2d-x-3.10/cocos/physics
$(SRCROOT)/cocos2d-x-3.10/cocos/math
$(SRCROOT)/cocos2d-x-3.10/cocos/2d
$(SRCROOT)/cocos2d-x-3.10/cocos/ui
$(SRCROOT)/cocos2d-x-3.10/cocos/network
$(SRCROOT)/cocos2d-x-3.10/cocos/audio/include
$(SRCROOT)/cocos2d-x-3.10/cocos/editor-support
$(SRCROOT)/cocos2d-x-3.10/extensions
$(SRCROOT)/cocos2d-x-3.10/external
$(SRCROOT)/cocos2d-x-3.10/external/chipmunk/include/chipmunk
(2)、[targets] -- [Build Setting] -- [Header Search Paths]:
$(inherited)
$(SRCROOT)/cocos2d-x-3.10/cocos/platform/sos
$(SRCROOT)/cocos2d-x-3.10/cocos/platform/ios/Simulation
(3)、[targets] -- [Build Setting] -- [Library Search Paths]:
$(SRCROOT)/cocos2d-x-3.10/prebuilt/ios
$(PROJECT_DIR)
第三步,配置Cocos2d-X開發所需框架,如圖:
第四步,Cocos2d-X工程環境配置
1.Build Settings中配置,設定Valid Architectures ,設定處理器編譯環境
如圖:
2.Build Options ->Enable Bitcode 設定為NO
3.設定Other Linker Flages
$(_COCOS_LIB_IOS_BEGIN)
$(_COCOS_LIB_IOS_END)
-ObjC
如圖:
4.設定Other C flages
-DNS_BLOCK_ASSERTIONS=1
如圖:
5.設定 C Language Dialect 為 Compiler Default,如圖:
6.設定 PreProcessor Macros
Debug:
USE_FILE32API
CC_TARGET_OS_IPHONE
COCOS2D_DEBUG=1
CC_ENABLE_CHIPMUNK_INTEGRATION=1
如圖:
Release:
USE_FILE32API
CC_TARGET_OS_IPHONE
CC_ENABLE_CHIPMUNK_INTEGRATION=1
如圖:
7.設定Apple LLVM [7/8/9/10……] - Warnings - All languages,如圖:
第五步,將原有的Cocos2d-X工程檔案匯入新搭建的ios原生專案中,分別對照“原有的Cocos2d-X工程”修改iOS原生專案,如圖:
執行專案,大搞成功!!!
注意:如果執行失敗,可能是iOS支援框架新增有誤,也可能是工程配置檔案配置有誤!!!
專案報錯:
1.類似 std::basic_string/std::string::find………………
解決方案:可能是因為匯入的框架不合理或者方法不對,也可能是匯入的框架型別或者版本不對,因此不支援C++編譯環境,檢查匯入iOS支援的框架。或者刪除重新匯入支援庫。
如果,仍然報錯,就匯入libstdc++.dylib或者libstdc++.6.0.9.dylib即可
2.類似 "_deflateReset", referenced from:………………… "*******", referenced from:………………
可能是因為匯入的框架不合理或者方法不對,也可能是匯入的框架型別或者版本不對,因此不支援C++編譯環境,檢查匯入iOS支援的框架。或者刪除重新匯入支援庫。
或者檢查工程配置檔案的引數修改是正確…………