Ошибка команды Linker: '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)
Ответы
Ответ 1
Попробуйте выполнить следующие действия:
-
Откройте проект в XCode.
-
В левом боковом окне/панели XCode нажмите на свое имя проекта сверху.
-
Теперь выберите Target с правой стороны XCode.
-
Выберите "Сформировать фазы" с правой панели. (здесь может быть другой вариант: настройки сборки, правила сборки)
-
В той же панели откройте "Скомпилировать источники", здесь проверьте: все ли перечисленные файлы (.m
)? если не все файлы, нажмите на (+) знак внизу, чтобы добавить (.m
) файлы, которых нет в списке
-
По вашей ошибке кажется, что RssXmlParser не существует, добавьте это и снова скомпилируйте
Теперь все будет хорошо.
Ответ 2
не вижу никого, предлагающего перейти на терминал и перейти в каталог, в котором находится проект, и запустить
xcodebuild -verbose
чтобы увидеть подробную ошибку, и просто чтение ошибки помогает много времени
Ответ 3
Я понял, что мне пришлось использовать файл .xcworkspace вместо файла .xcodeproj.
Ответ 4
Продукт → Очистить затем Продукт → Выполнить:)
Ответ 5
В моем случае я ошибочно создал новый подкласс 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
Ошибка компоновщика была исправлена.
Ответ 6
Я решил ту же проблему, потому что я создал компоненты как отдельные проекты. После добавления папок в основной проект я забыл удалить файлы .plist,.string и дополнительные файлы main.m из каталогов групп импортированных компонентов.
Удаление этих проблем решило мою проблему, потому что приложение явно получало конфликтующие команды сборки...
Ответ 7
Я столкнулся с этой ошибкой из-за дублирования имен файлов (я создал подклассы NSManagedObjectContext автоматически в основных данных через меню редактора).
Начиная с XCODE 5.0, просто закройте и перезапустите, и xcode должен распознать это и исправить его для вас, если вы нажмете на желтое предупреждение в левой панели панели
Ответ 8
Аналогичная ошибка произошла со мной на Xcode 6.4. Похоже на ошибку Xcode.
Мое исправление заключалось в том, чтобы перейти в файл ".o", который вызвал ошибку, снять и перепроверить целевые членства, которые вам нужны.
Ответ 9
Я думаю, может быть, вы пытаетесь создать два разных файла .C(с основной функцией) в одном проекте. C только позволяет вам иметь один главный вход в каждом проекте.
Ответ 10
Я не знаю, как это работает. Но я просто закрыл xcode и открылся снова, щелкнув файл xcworkspace и работал у меня. вы можете надеяться, что это может решить вашу проблему, спасибо.
Ответ 11
Удерживайте нажатой клавишу alt.
На верхней панели инструментов перейдите в
Продукт > папка чистой сборки
Нажмите "clean build folder" и дождитесь его создания и запуска.
Он должен разрешить любые ошибки в файле сборки.