Ошибка компоновщика из-за класса-CCScrollLayer?

Я потерян.

Раньше я много использовал CCScrollLayer, это класс cocos2d, но теперь я получил странную ошибку. mach-o-linker,

  1. я добавил классы в свой проект (CCScrollLayer.h+m)
  2. я импортировал их
  3. я определил: CCScrollLayer *scroller;

затем, когда я положил эту строку кода:

   scroller = [[CCScrollLayer alloc] initWithLayers:[NSArray arrayWithObjects:page1,page2,nil] widthOffset:100];

Я получил ошибки Mach-O-Linker!

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_CCScrollLayer", referenced from:
      objc-class-ref in mainScene.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

я определил armv6 и 7, в настройках проекта.

что это такое?? я знаю, что это не ошибка кода, а что-то другое.

4 ответа

Убедитесь, что у вас есть CCScrollLayer в ваших источниках компиляции. Если его там нет, добавьте его: Target > Build Phases > Compile Sources

Они добавлены к правильной цели? Я не уверен, но я думаю, что многие ошибки mach-o-linker имеют одно и то же решение.

Проверьте это сообщение: Apple Mach-O Linker Ошибка при компиляции для устройства

Возможно, вам следует добавить файл реализации для CCScrollLayer к CompileSources в BuildPhases вашей цели, если он еще не существует

Удостоверься что CCScrollLayer.m указан на этапе компиляции вашего проекта.

Ошибка означает, что компоновщик не смог найти именованный класс во всех объектах, которые он получил. Задача компоновщика состоит в том, чтобы создать окончательный исполняемый файл со всеми связанными между файлами ссылками, и, если он не может выполнить одну из ссылок, он потерпит неудачу.

Общая причина этого - "забыть" добавить один из скомпилированных файлов в качестве исходного файла для компоновщика. Поскольку XCode делает это автоматически на основе всех скомпилированных файлов - вы, скорее всего, вообще забыли добавить его как скомпилированный файл.

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