So verknüpfen Sie die statische Coco2D-Bibliothek (1.1 Beta 2) mit Arbeitsbereichen in Xcode 4.3.1

8

Ich habe bisher Folgendes getan:

  1. Erstellter Arbeitsbereich
  2. Mein Projekt hinzugefügt
  3. Cocos2d-iOS-Projekt hinzugefügt (durch Ziehen in den Projektnavigator ziehen). Es ist ein Geschwister meines Projekts (nicht Kind).
  4. In meinem Projekt in der Build-Phase, verknüpft mit libcocos2d.a
  5. In den Build-Einstellungen meines Projekts - Legen Sie fest, dass die Pfade immer nach YES
  6. durchsucht werden
  7. Erstellte Quellbaumvariable, die auf einen Ordner zeigt, der die cocos2d iOS xcodeproj-Datei enthält.
  8. In den Benutzerkopfpfaden meines Projekts wurde eine Quellbaumvariable aus Schritt 6 hinzugefügt. Als rekursiv festlegen. 8.Im Projektnavigator, angeklickt libcocos2d.a-Bibliothek (es erscheint rot). Stellen Sie den Speicherort "Relative to build products" ein. Sie legen dies im rechten Fenster in Xcode 4.3.1 fest.
  9. Geschlossener Arbeitsbereich und geöffnete pbxproj-Datei in TextWrangler. Nach Pfad gesucht, der libcocos2d.a enthält. Entferne Pfad, so dass der Eintrag nur "libcocos2d.a" lautet. Dies liegt daran, dass sich die Bibliothek nach dem Kompilieren sowieso im selben Build-Verzeichnis der App befindet.

CodeSense und Autocomplete-Arbeit. Aber das wird nicht kompiliert. Ungefähr 70 Linker-Fehler tauchen auf, wenn ich versuche zu bauen, alle sagen etwas wie:

Nicht definierte Symbole für Architektur armv7:   "_OBJC_CLASS _ $ _ CCDirector", referenziert von:       objc-class-ref in AppDelegate.o       objc-class-ref in ViewController.o   "_kEAGLColorFormatRGB565", referenziert von:       - [RIAppDelegate applicationDidFinishLaunching:] in AppDelegate.o   "_OBJC_CLASS _ $ _ CCTexture2D", referenziert von:       objc-class-ref in AppDelegate.o   "_OBJC_CLASS _ $ _ EAGLView", referenziert von:       objc-class-ref in AppDelegate.o

Wenn ich versuche, für den Simulator zu bauen, sagt es statt armv7, dass die Symbole für i386 fehlen. Das cocos2d-Projekt selbst kompiliert & amp; baut gut. Es ist mein Projekt, das die oben genannten Fehler aufweist.

Die cocos2d-Bibliothek ist im Build-Verzeichnis meiner App vorhanden, nachdem ich versucht habe, sie zu erstellen.

EDIT: Vergessen zu erwähnen. Ich habe auch das Schema für mein Projekt bearbeitet, um nicht parallel zu bauen. Ich fügte auch das cocos2d Ziel hinzu und machte es zum Anfang der Liste (also sollte es zuerst bauen).

EDIT: Zur Verdeutlichung - nachdem die Änderungen an der Datei pbxproj wie oben beschrieben vorgenommen wurden, ist die Datei libcocos2d.a nicht mehr rot. Es sieht normal aus. Auch meine App ist auch gebaut, obwohl es die Link-Fehler gibt und der Build fehlschlägt. (Es wird nicht tatsächlich erstellt, aber das Produkt ist nicht "rot". Eine Anwendungsdatei wird am selben Speicherort erstellt, an dem auch die cocos2d-Bibliothek erstellt wird.

    
Pterie Daktyl 25.03.2012, 12:51
quelle

2 Antworten

11

Ich habe schon seit einiger Zeit versucht, Cocos2d als statische Bibliothek anstelle einer Vorlage zu verwenden. Der Grund dafür ist, dass es mir erleichtert, mein Projekt modular zu entwickeln. Außerdem erleichtert es den Wechsel zwischen cocos2d-Versionen und so weiter. Nach dem Durchsuchen der cocos2d-x-Foren habe ich diesen Link gefunden: Ссылка

Ich habe die Frameworks gefunden, die ich hinzufügen musste, und das hat alle Verbindungsprobleme gelöst.

Ich habe noch immer keine Bewerbung an den Laden geschickt, also wenn jemand mit mehr Erfahrung es überprüfen könnte, ob es irgendwelche Fehler / Fehler gibt, wäre es großartig. Englisch ist eine zweite Sprache für mich, also bitte nichts dagegen. Dies wurde mit cocos2d1.1beta2 und Xcode 4.3.1 gemacht.

  1. Erstellen Sie einen Xcode-Arbeitsbereich
  2. Navigieren Sie zu dem Ordner mit der Datei cocos2d xcodeproj (iOS / Mac). Hier haben Sie cocos2d nach dem Herunterladen entpackt.
  3. Ziehen Sie die xcodeproj-Datei in das Navigator-Fenster von Xcode (links neben dem Fenster) und legen Sie sie dort ab.
  4. Klicken Sie auf das kleine Dreieck in der Nähe der cocos2d Projektdatei, so dass alle Inhalte verschwinden.
  5. Fügen Sie Ihrem Arbeitsbereich ein neues Projekt hinzu, indem Sie mit der rechten Maustaste in den Navigator und "Neues Projekt" klicken. Stellen Sie sicher, dass das Projekt dem Cocos2D-Projekt als Geschwister hinzugefügt wurde und nicht als Kind. Ich habe die Einzelfensteranwendung (iOS)
  6. gewählt
  7. Gehen Sie in diesem neuen Projekt zu den Erstellungseinstellungen und ändern Sie "Benutzerpfade immer durchsuchen" auf "Ja"
  8. Fügen Sie den Speicherort Ihres cocos2d-Ordners zu "Suchpfaden für Benutzerheader" hinzu. Wenn Sie möchten, können Sie stattdessen den Ordner cocos2d zu Ihrer Liste der Quellbäume in Xcode hinzufügen und stattdessen einfach den Namen der Variablen hier eingeben. ZB: $ {COCOS2D_SRC}. Dies ist nützlich, wenn Sie später die Ordnerstruktur der Build-Umgebung ändern möchten.

  9. Klicken Sie auf das Ziel und wählen Sie die Registerkarte Build-Phasen. Sie möchten die folgenden Binärdateien mit Ihrer Bibliothek verknüpfen. Stellen Sie sicher, dass sie da sind. libcocos2d.a libz.dylib libxml2.dylib OpenGLES.framework QuartzCore.Framework UIKit.Framework Foundation.Framework CoreGraphics.framework

Wenn libcocos2d.a "rot" ist, machen Sie sich keine Sorgen. Es kompiliert immer noch / Links richtig.

  1. Ändern Sie unter Build-Einstellungen "Nur aktive Architekturen erstellen" auf JA.

Andernfalls können Sie eine Fehlermeldung erhalten, wenn Sie die Datei /Users/Pteriedaktyl/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/libcocos2d.a ignorieren. Die Datei wurde für das Archiv erstellt, das nicht mit der Architektur verknüpft ist (armv6 )

  1. Stellen Sie in Ihrer Datei info.plist sicher, dass Sie den Eintrag in "erforderliche Gerätefunktionen", der armv7 angibt, entfernen. Andernfalls wird Ihr Code nur auf neueren Geräten ausgeführt.

Jetzt sind Sie fertig! Sie sollten auf die cocos2d-API vom Geschwisterprojekt zugreifen können. Wenn Sie Ihre Version von cocos2d ändern möchten, müssen Sie nur das cocos2d-Projekt im Arbeitsbereich ändern, den Pfad der Quellstruktur aktualisieren (falls erforderlich) und eine Verknüpfung zur neuen libCocos2d.a

herstellen

Testen: Um es einfach auszuprobieren, habe ich den App-Delegaten modifiziert und den Controller-Code so angezeigt, dass er mit dem Code aus einem meiner alten Hello World-Projekte übereinstimmt.

Bitte probieren Sie es aus und fügen Sie es zu dem Thread hinzu, wenn Sie irgendwelche Probleme haben.

    
Pterie Daktyl 27.04.2012, 05:52
quelle
1

Scrollen Sie im Bereich Dienstprogramme für libCocos2d.a unterhalb der Identität und des Typs, in dem Sie die Bibliothek relativ zu Produkten erstellen, nach unten und stellen Sie sicher, dass die Zielmitgliedschaft für Ihre Ziele ausgewählt ist. Wenn dies nicht der Fall ist, wird es nicht in den tatsächlichen Build des Ziels aufgenommen. Zumindest war das die einzige Möglichkeit, dieses Problem zu reproduzieren.

    
Peter Nolen 26.03.2012 16:05
quelle