PLCrashReporter в XCode 4 - не будет компилироваться в симуляторе

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

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

Я тяну в рамках в моем файле класса с помощью

#import <CrashReporter/CrashReporter.h>

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

Неопределенные символы для архитектуры i386: "_OBJC_CLASS_$_PLCrashReporter", на который ссылаются из: objc-class-ref в AppDelegate+CrashReporting.o "_OBJC_CLASS_$_PLCrashReport", на который ссылаются: objc-class-ref в символе AppDelegate: objc-class-ref s) не найден для архитектуры i386 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

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

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

3 ответа

Решение

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

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

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

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

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

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

Благодарю.

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

libstdC++.dylib

в "Связь бинарных с библиотеками".

Другие вопросы по тегам