Я собираюсь заранее извиниться здесь. Проект, над которым я работаю, подпадает под действие пары NDA, поэтому я не смогу быть настолько конкретным, как обычно хотел бы.
Я работаю над проектом iOS, который включает в себя предварительно скомпилированную библиотеку в форме файла .h и .a. Я начал разработку с определенной версии этой библиотеки, и все работало нормально. С тех пор они выпустили новую версию, которая мне нужна для конкретной новой функции.
Между старой и новой версиями изменились некоторые имена функций. Когда я обновляю свой код для вызова новых методов, я получаю Apple Mach-O Linker Error
во время компиляции: (имена были изменены, чтобы защитить невинных)
Undefined symbols for architecture armv7:
"methodName", referenced from:
myMethod() in MyClass.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Я знаю, что похоже, что он не включает код armv7, но на самом деле это красная сельдь. Если я установлю параметр сборки архитектуры для проекта и цели на Standard (armv6 armv7)
, я получу ту же ошибку компоновщика, за исключением того, что она скажет armv6.
Проблема в том, что я могу поместить новые файлы .h и .a в новый проект, вызвать тот же метод и не получить ошибку компоновщика!
У меня такое ощущение, что что-то не очищается, и он пытается скомпилировать старый файл .a. Я использую Xcode 4.1 на Snow Leopard. Я попытался удалить файл из проекта, удалить файл .a из раздела Link Binary With Libraries
в разделе Build Phases
для цели, очистить, добавить обратно файл .a и перестроить, и я все еще получаю сообщение об ошибке. начинает сходить с ума здесь.