Ошибка команды компоновщика: '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 ответов
Попробуйте эти шаги:
Откройте свой проект в XCode.
В левом боковом окне / панели XCode нажмите на название вашего проекта сверху.
Теперь выберите Target с правой стороны XCode.
Выберите Build Phases в верхней части правой панели. (здесь другой вариант будет Настройки сборки, Правила сборки)
В этой же панели откройте "Компилировать исходники", здесь проверьте: все ли файлы (
.m
) в списке? если не все файлы, нажмите на (+), чтобы добавить (.m
) файлов, которых нет в спискеПо вашей ошибке кажется, что 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 из импортированных каталогов групп компонентов.
Удаление их решило мою проблему, потому что приложение явно получало конфликтующие команды сборки...