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