8

я сделал следующее до сих пор:Как сделать ссылку на coco2d статической библиотеки (1,1 беты-2) с использованием рабочих пространств в Xcode 4.3.1

  1. Created рабочей
  2. Добавлена ​​мой проект
  3. Добавлена ​​Cocos2d iOS (путем перетаскивания в навигатор проекта). Это брат моего проекта (не ребенок).
  4. В моем проекте, на этапе сборки, связанные с libcocos2d.a
  5. В настройках сборки моего проекта - Установить Всегда искать пути к YES
  6. Создан источник дерева переменная, указывающая на папку, содержащую Cocos2D IOS xcodeproj файл.
  7. В пулах заголовков пользователя моего проекта добавлена ​​переменная исходного дерева дерева из шага 6. Установите в качестве рекурсивного. 8. Навигатор проекта, щелкнув по библиотеке libcocos2d.a (он выглядит красным). Установить местоположение «Относительно сборки продуктов». Вы установите это в самом правом окне в Xcode 4.3.1.
  8. Закрытое рабочее пространство и открытый файл pbxproj в TextWrangler. Искал путь, содержащий libcocos2d.a Удалить путь, поэтому запись читает только «libcocos2d.a». Это связано с тем, что после компиляции библиотека все равно находится в том же каталоге компоновки приложения.

Codesense и автозаполнение работы. Но это не скомпилируется. Около 70 ошибок компоновщика всплывал, когда я пытаюсь построить, все говоря что-то вроде:

неопределенных символов для архитектуры ARMv7: "_OBJC_CLASS _ $ _ CCDirector", ссылочных от: ObjC-класса реф в AppDelegate.o objc- класса исх в ViewController.o "_kEAGLColorFormatRGB565", ссылки из: - [RIAppDelegate applicationDidFinishLaunching:] в AppDelegate.o "_OBJC_CLASS _ $ _ CCTexture2D", ссылки из: ObjC-класса исх в AppDelegate.o «_OBJC_CLASS_ $ _EAGLView ", ссылка от: objc-class-ref in AppDelegate.o

Если я попытаюсь построить для симулятора, то вместо armv7 он говорит, что символы для i386 отсутствуют. Проект cocos2d сам по себе компилирует & строит отлично. Это мой проект, который имеет вышеуказанные ошибки.

Библиотека cocos2d присутствует в каталоге сборки моего приложения после того, как я попытаюсь построить.

EDIT: Забыл упомянуть. Я также отредактировал схему для моего проекта, чтобы не строить параллельно. Я также добавил цель cocos2d и сделал ее вершиной списка (так что она должна быть первой).

EDIT: Чтобы уточнить - после внесения изменений в файл pbxproj, как описано выше, файл libcocos2d.a больше не является красным. Это выглядит нормально. Также мое приложение также построено, несмотря на то, что есть ошибки в ссылках, и сборка завершается с ошибкой. (На самом деле он не создается, но продукт не является «красным». Файл приложения создается в том же месте, где создается библиотека cocos2d.

+0

Если вам действительно не нужно это делать самостоятельно, вы должны рассмотреть возможность использования Kobold2D (http://www.kobold2d.com). Cocos2D уже настроен как статическая библиотека, так же как и все другие библиотеки, и ARC также включен. Вам больше не нужно беспокоиться о каких-либо * этих технических вещах. Просто установите и начните работу над своим проектом. – LearnCocos2D

+0

Спасибо Steffen, но я не заинтересован в использовании Kobol2D. –

ответ

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 (IOS/Mac). Здесь вы распаковали cocos2d после его загрузки.
  3. Перетащите файл xcodeproj в окно навигатора Xcode. (Слева больше окна).
  4. Нажмите на крошечный треугольник рядом с файлом проекта cocos2d, чтобы все его содержимое исчезло.
  5. Добавьте новый проект в рабочее пространство, щелкнув правой кнопкой мыши в навигаторе и «Новый проект». Удостоверьтесь, что проект добавлен как брат в проект cocos2d, а не как ребенок. Я выбрал одно приложение окна (IOS)
  6. В этом новом проекте, перейдите в настройки сборки и изменения «Всегда Поиск пользователя Контуры» на «Да»
  7. Добавить местоположение вашей cocos2d папки в «User Header Search Контуры». Если вам нравится, вы можете добавить папку cocos2d в свой список исходных деревьев в Xcode и вместо этого просто введите имя переменной здесь. Например: $ {COCOS2D_SRC}. Это удобно, если позже вы захотите изменить структуру папок среды сборки.

  8. Нажмите на цель и выберите вкладку фаз сборки. Вы хотите связать следующие файлы с вашей библиотекой. Удостоверьтесь, что они там. libcocos2d.a libz.dylib libxml2.dylib OpenGLES.framework QuartzCore.framework UIKit.framework Foundation.framework CoreGraphics.framework

Если libcocos2d.a является "красный", то дон Не беспокойтесь об этом. Он все еще правильно компилирует/связывает.

  1. В разделе «Настройки сборки» измените «Только строить активные архитектуры» на «ДА».

В противном случае вы можете получить ошибку, игнорируя файл /Users/Pteriedaktyl/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/libcocos2d.a, файл был создан для архива, который не является архитектурой является (armv6)

  1. В вашем файле info.plist обязательно удалите запись внутри «необходимых возможностей устройства», которая говорит armv7. В противном случае ваш код будет работать только на более новых устройствах.

Теперь вы настроены! Вы должны иметь доступ к cocos2d api из проекта sibling.Если вы когда-либо захотите изменить свою версию cocos2d, вам просто нужно изменить проект cocos2d, который находится в рабочей области, обновить путь к исходному дереву (если необходимо) и ссылку на новый libCocos2d.a

Тестирование: Чтобы попробовать, я изменил делегат приложения и просмотрел код контроллера, чтобы он соответствовал коду из одного из моих старых проектов hello world.

Пожалуйста, попробуйте это и добавьте в тему, если у вас возникли проблемы.

1

В панели «Утилиты» для libCocos2d.a, под Identity и Type, где вы устанавливаете библиотеку по отношению к Build Products, прокрутите страницу вниз и убедитесь, что целевое членство выбрано для ваших целей. Если это не так, оно не будет включено в фактическую сборку, сделанную целевым объектом. По крайней мере, это был единственный способ воспроизвести эту проблему.

+0

Итак, вы говорите, что, следуя шагам, которые я терплю, вы не видите никаких ошибок? –

+0

До тех пор, пока целевое членство установлено, чем да, оно сработало и не дает никаких ошибок. –

+0

У вашего приложения есть код, который обращается к cocos2d api? Если код отсутствует, он строит отлично. –

Смежные вопросы