#iphone #objective-c #xcode #linker #audiostreamer
#iPhone #objective-c #xcode #компоновщик #audiostreamer
Вопрос:
Я использую проект потоковой передачи звука Мэтта Галлахера. Я загрузил код / проект, и он выполняется / компилируется / связывается просто отлично.
Проблема заключается в том, что я пытаюсь интегрировать класс AudioStreamer в свой собственный проект. Я добавил все необходимые фреймворки и проверил настройки проекта, чтобы убедиться, что они максимально соответствуют проекту Мэтта.
Я еще не добавил ничего из кода Мэтта (за исключением класса AudioStreamer). Все, что я сейчас делаю, это определяю эту функцию:
- (void)createStreamer {
streamer = [[AudioStreamer alloc] initWithURL:audiourl];
}
Если я закомментирую единственную строку в этой функции, проект скомпилируется / свяжет нормально. Если я оставлю эту строку там, я получу эту ошибку (которая, если я правильно понимаю, является ошибкой компоновщика):
"_OBJC_CLASS_$_AudioStreamer", referenced from:
objc-class-ref-to-AudioStreamer in AudioViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Я погуглил эту ошибку, и большинство людей получают ее, потому что они забыли включить определенный фреймворк. В моем проекте есть все необходимые фреймворки.
Кто-нибудь знает какую-либо другую причину, по которой могла возникнуть эта ошибка? Есть ли какие-то настройки, которые я, возможно, упускаю из виду?
Большинство настроек проекта те же, за исключением того, что архитектура сборки установлена на arm6, arm7 в проекте Мэтта и i386 в моем. Я попытался выполнить компиляцию как для симулятора, так и для устройства, и я получаю ту же ошибку.
Единственное, о чем я мог подумать, это о том, что проект Мэтта датирован 2009 годом (довольно старым), так что, возможно, что-то изменилось в конфигурации по умолчанию в новых xcodes?
Если кто-нибудь может предоставить какую-либо информацию, я был бы признателен.
Спасибо.
Ответ №1:
Похоже, вам нужно добавить AudioStreamer.m к вашей цели.
Комментарии:
1. Да, это все, я только что узнал об этом из другого поста. Ключом к поиску ответа был поиск «collect2: ld вернул статус выхода 1» вместо первой строки. Спасибо.. Я потратил так много времени на это. Я не знаю, почему она не была установлена по умолчанию, поскольку я создал этот класс, а затем скопировал вставленный код.