2012-03-25 30 views
8

我已經做了迄今爲止下面如何鏈接到coco2d靜態庫(測試版1.1 2)在Xcode:使用工作區4.3.1

  1. 創建的工作區
  2. 加了我的項目
  3. 添加了的Cocos2D iOS項目(通過拖放到項目導航器中)。這是我的項目(而不是孩子)的兄弟姐妹。
  4. 在我的項目,在建階段,掛libcocos2d.a
  5. 在我的項目的生成設置 - 設置總是搜索路徑是
  6. 創建源代碼樹變量指向文件夾包含了cocos2d的iOS xcodeproj文件。
  7. 在我的項目的用戶頭文件路徑中,添加了第6步中的源碼樹變量。設置爲遞歸。 8.在項目導航器中,單擊libcocos2d.a庫(它顯示爲紅色)。設置位置「相對於構建產品」您可以在Xcode 4.3.1的最右側窗口中設置此位置。
  8. 關閉工作區,並在TextWrangler中打開pbxproj文件。搜索包含libcocos2d.a的路徑刪除路徑,因此該條目只讀取「libcocos2d.a」。這是因爲在編譯之後,庫仍然在應用程序的同一個構建目錄中。

Codesense和自動完成工作。但是這不會編譯。大約70鏈接錯誤彈出,當我嘗試建立,所有的說法是這樣的:對建築的ARMv7

未定義的符號: 「_OBJC_CLASS _ $ _ CCDirector」,從引用: objc級,裁判在AppDelegate.o objc-類-REF在ViewController.o 「_kEAGLColorFormatRGB565」,從引用: - [RIAppDelegate的applicationDidFinishLaunching:在AppDelegate.o 「_OBJC_CLASS _ $ _ CCTexture2D」,從引用: objc級,裁判在AppDelegate.o 「_OBJC_CLASS_ $ _EAGLView「,引用自: objc-class-ref AppDelegate.o

如果我嘗試爲模擬器構建,那麼不是使用armv7,而是說i386缺少這些符號。 cocos2d項目本身編譯&生成良好。這是我的項目,有上述錯誤。

在我嘗試構建之後,cocos2d庫存在於我的應用程序的構建目錄中。

編輯:忘了提。我還編輯了我的項目計劃,不能並行構建。我還添加了cocos2d目標,並將其作爲列表的頂部(所以它應該先構建)。

編輯:澄清 - 如上所述對pbxproj文件進行更改後,libcocos2d.a文件不再是紅色。它看起來很正常。此外,我的應用程序也構建,即使有鏈接錯誤和構建失敗。 (它並不實際構建,但產品不是「紅色」)在與生成cocos2d庫的位置相同的位置創建應用程序文件

+0

除非你真的需要爲自己做這個,否則你應該考慮使用Kobold2D(http://www.kobold2d.com)。 Cocos2D已經設置爲靜態庫,所有其他庫也是如此,並且ARC也被啓用。你不需要擔心這些技術問題中的任何一個。只需安裝並開始處理您的項目。 – LearnCocos2D 2012-03-25 19:11:46

+0

謝謝Steffen,但我對使用Kobol2D不感興趣。 – 2012-03-26 01:52:38

回答

11

我一直在嘗試使用Cocos2d作爲靜態庫,而不是模板。原因在於它能夠以模塊化的方式開發我的項目。另外,它可以更輕鬆地在cocos2d版本之間切換等等。搜索的cocos2d-x的論壇後,我發現這個鏈接:http://cfc.kizzx2.com/index.php/cocos2d-x-with-xcode-4-from-scratch-without-template/

我發現我需要添加框架,並解決了所有鏈接的問題。

我還沒有向商店提交申請,所以如果有更多經驗的人可以查看它是否有任何陷阱/錯誤,那就太好了。英語對我來說是第二語言,所以請不要介意。這使用cocos2d1.1beta2和Xcode的4.3.1

  1. 創建一個Xcode工作區
  2. 導航到包含的cocos2d xcodeproj文件(式IO/Mac)中的文件夾進行。這是下載後解壓縮cocos2d的地方。
  3. 將xcodeproj文件拖放到Xcode的導航窗口中(最左邊的窗口)。
  4. 單擊cocos2d項目文件附近的小三角,以便其所有內容都消失。
  5. 右鍵單擊導航器和「新建項目」,將新項目添加到您的工作區。確保項目作爲兄弟加入到cocos2d項目中,而不是作爲孩子。我選擇了單一窗口的應用程序(IOS)
  6. 在這個新項目中,去構建設置,變「總是搜索用戶路徑」爲「是」
  7. 添加您的cocos2d文件夾「用戶頭搜索的位置路徑」。如果你喜歡,你可以將Cocos2d文件夾添加到Xcode源代碼樹列表中,而只需在這裏填寫變量的名稱。例如:$ {COCOS2D_SRC}。如果稍後想要更改構建環境的文件夾結構,這很方便。

  8. 單擊目標並選擇構建階段選項卡。您想要將以下二進制文件與您的庫鏈接。確保他們在那裏。 libcocos2d.a libz.dylib libxml2.dylib OpenGLES.framework QuartzCore.framework UIKit.framework Foundation.framework CoreGraphics.framework

如果libcocos2d.a是 「紅色」,那麼不要別擔心。它仍然編譯/鏈接正確。

  1. 在構建設置下,將「僅生成活動體系結構」更改爲YES。

否則,你可能會得到一個錯誤,忽略文件/Users/Pteriedaktyl/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/libcocos2d.a,文件是專爲存檔這是不被建築鏈接(armv6)

  1. 在您的info.plist文件中,請確保刪除「必需的設備功能」中的條目,該條目指出armv7。否則,您的代碼只能在較新的設備上運行。

現在你被設置了!你應該能夠從兄弟項目中訪問cocos2d api。如果您想更改您的cocos2d版本,只需更改工作區中的cocos2d項目,更新源樹路徑(如有必要),並鏈接到新的libCocos2d.a

測試: 試試看,我修改了應用程序委託和視圖控制器代碼,以匹配來自我的舊世界項目之一的代碼。

請試試看,如果您有任何問題,請添加到線程中。

1

在libCocos2d.a的「實用程序」窗格中,標識和類型,您將庫設置爲相對於構建產品,滾動到底部並確保爲目標選擇了目標成員資格,如果不是,則不會將其包含在目標實際構建中。至少,這是我能夠重現此問題的唯一途徑。

+0

那麼你是說當你按照我放的步驟時,你沒有看到任何錯誤? – 2012-03-28 09:54:34

+0

只要目標成員資格設置爲「是」,它就起作用並且不會給出任何錯誤。 – 2012-04-12 15:16:49

+0

您的應用程序是否有訪問cocos2d api的代碼?如果沒有代碼,那麼它會很好。 – 2012-04-26 07:07:40