Ошибка команды компоновщика: 'ld: символ (ы) не найден для архитектуры i386'

У меня ошибка во время компиляции. Кажется странным. это работало как приложение подробного представления, но использование единственного представления, кажется, не работает. это детали ошибки:

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

11 ответов

Решение

Попробуйте эти шаги:

  1. Откройте свой проект в XCode.

  2. В левом боковом окне / панели XCode нажмите на название вашего проекта сверху.

  3. Теперь выберите Target с правой стороны XCode.

  4. Выберите Build Phases в верхней части правой панели. (здесь другой вариант будет Настройки сборки, Правила сборки)

  5. В этой же панели откройте "Компилировать исходники", здесь проверьте: все ли файлы (.m) в списке? если не все файлы, нажмите на (+), чтобы добавить (.m) файлов, которых нет в списке

  6. По вашей ошибке кажется, что RssXmlParser там нет, добавьте это и скомпилируйте снова

Теперь все будет хорошо.

Не вижу никого, кто предлагал бы перейти в терминал и перейти в каталог, где находится проект и запустить

xcodebuild -verbose

видеть подробные ошибки и просто чтение ошибки помогает большую часть времени

Я понял, что должен был использовать файл.xcworkspace вместо файла.xcodeproj.

Продукт -> Очистить, затем Продукт -> Запустить:)

В моем случае я по ошибке создал новый подкласс UIView с .h а также .c файлы вместо .h а также .m файлы. Изменить расширения было легко, но я не думал менять содержимое .m файлы. Так что мой .h файлы имели

#ifndef My_Project_MPMyView_h
#define My_Project_MPMyView_h

#import <UIKit/UIKit.h>

@interface MPMyView : UIView

@end

#endif

и мой .m файлы неправильно имели

#include <stdio.h>

Когда я изменил свой .m файлы в

@interface MPMyView : UIView

@end

@implementation MPMyView

@end

Ошибка компоновщика была исправлена.

Удерживайте Alt . На верхней панели инструментов перейдите к

Продукт> папка чистой сборки

Нажмите "очистить папку сборки" и дождитесь ее сборки и запуска. Это должно устранить любые ошибки в файле сборки.

Я думаю, возможно, вы пытаетесь создать два разных файла.C (с основной функцией) в одном проекте. C позволяет вам иметь только один главный вход для каждого проекта.

Я столкнулся с этой ошибкой из-за дублирования имен файлов (я автоматически создал подклассы NSManagedObjectContext в основных данных через меню редактора).

Начиная с XCODE 5.0, просто выйдите и перезапустите, и xcode должен это распознать и исправить, если вы нажмете на желтое предупреждение в левой панели.

Подобная ошибка только что произошла со мной на Xcode 6.4. Похоже, ошибка Xcode.

Мое исправление состояло в том, чтобы перейти к файлу ".o", который вызвал ошибку, снять отметку и перепроверить целевые членства, которые вам нужны.

Я не знаю, как это работает. Но я просто закрыл xcode и снова открыл, щелкнув файл xcworkspace, и работал на меня. Вы можете попробовать, надеюсь, это может решить вашу проблему, спасибо.

Я решил ту же проблему, потому что я создал компоненты как отдельные проекты. После добавления папок в основной проект я забыл удалить файлы.plist, .string и дополнительные файлы main.m из импортированных каталогов групп компонентов.

Удаление их решило мою проблему, потому что приложение явно получало конфликтующие команды сборки...

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