PLCrashReporter в XCode 4 - не будет компилироваться в симуляторе - PullRequest
8 голосов
/ 01 июня 2011

Я, должно быть, делаю что-то совершенно глупое, но я не могу включить платформу PLCrashReporter в свой проект.Вот шаги, которые я предпринял, чтобы получить фреймворк:

  1. Загрузил файл .dmg с официального сайта проекта по коду Google
  2. Скопировал папку CrashReporter.framework в корневой каталогмой проект
  3. Добавил фреймворк, перейдя в мой проект, выбрав цель, перейдя на вкладку "Фазы сборки", открыв раздел "Связать двоичные файлы с библиотеками", щелкнув знак плюс и добавив папку CrashReporter.framework * 1008.*

Я извлекаю фреймворк из файла моего класса, используя

#import <CrashReporter/CrashReporter.h>

Когда я пытаюсь скомпилировать симулятор под 4.3, я получаю следующие ошибки:

Неопределенные символы для архитектуры i386: «_OBJC_CLASS _ $ _ PLCrashReporter», на который ссылается из: objc-class-ref в AppDelegate + CrashReporting.o «_OBJC_CLASS _ $ _ PLCrashReport», на который ссылается ссылка на objc-class-ref в.o ld: символ (ы) не найдены для архитектуры i386 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра invocation)

Когда я компилирую под устройство, все нормально.Есть ли какой-нибудь заголовок или путь поиска в библиотеке, который мне нужно включить?

Приложение компилируется под XCode 3 без проблем во всех конфигурациях.

Ответы [ 3 ]

13 голосов
/ 02 августа 2011

У меня была такая же проблема, и я смог ее решить. Вот шаги, которые я выполнил ...

  1. Загрузите исходный выпуск PLCrashReporter и распакуйте его.
  2. Откройте проект xcode PLCrashReporter. Этот проект настроен на использование старого SDK, обновите все необходимые SDK для каждой цели, чтобы избавиться от предупреждений. Это также необходимо для компиляции на следующем шаге.
  3. Перейдите к цели CrashReporter-iPhoneSimulator. В настройках сборки: а) установите «Выполнить предварительную ссылку для одного объекта» на «Нет», б) установите «Тип Mach-O» на «Статическая библиотека».
  4. Выберите CrashReport-iPhoneSimulator: [Симуляция IOS (т.е. iPhone 4.3 Simulator)] и нажмите «build».
  5. Перейдите в каталог сборки для PLCrashReporter. Для меня это было / Пользователи / Имя пользователя / Библиотека / Разработчик / Xcode / DerivedData / CrashReporter- (случайные символы) / Сборка / Продукты / Debug-iphonesimulator
  6. Скопируйте libCrashReporter-iphonesimulator.a из каталога сборки на шаге 5 в каталог проекта приложения iphone, в который вы хотите добавить программу аварийного восстановления.
  7. Откройте проект приложения iphone в xcode.
  8. Загрузите бинарный выпуск PLCrashReporter и распакуйте фреймворк в локальный каталог.
  9. Добавьте платформу CrashReporter в свой проект, используя эту SO запись .
  10. Следуя той же процедуре, что и в шаге 9, добавьте статическую библиотеку libCrashReporter-iphonesimulator.a в раздел «Связать двоичные файлы с библиотеками» на этапах сборки. При добавлении статической библиотеки каталог * .framework не требуется.
  11. Просмотрите «Связать двоичные файлы с библиотеками» в целевом объекте. Убедитесь, что libCrashReporter-iphonesimulator.a указан выше платформы CrashReporter. Вы можете перетащить и изменить порядок.

Надеюсь, это поможет.

1 голос
/ 16 января 2014

Для всех, кто ищет эту информацию:

Я выполнил те же действия, что и выше, однако получал ошибки.Я удалил статическую библиотеку и включил только фреймворк (который вы можете получить из их dmg).

Это отлично сработало для меня.Я думаю, что процесс создания статической библиотеки путем создания проекта был стар (до того, как они создали фреймворк).

Спасибо.

0 голосов
/ 07 апреля 2014

Не забудьте включить

libstdc ++. Dylib

в "Связать двоичные файлы с библиотеками".

...