Ошибка компоновщика iPhone (AudioStreamer)

#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» вместо первой строки. Спасибо.. Я потратил так много времени на это. Я не знаю, почему она не была установлена по умолчанию, поскольку я создал этот класс, а затем скопировал вставленный код.