Подтвердить что ты не робот

Дублирующие символы для архитектуры i386 clang

Я видел несколько сообщений о google и stackoverflow, связанных с этой ошибкой, я прочитал их все, но все еще получаю проблему, я буду рад за решение. Вот ошибка mesage, которую я получаю при компиляции...

каталог не найден для опции '-L/Users/somefolder/Documents/Bharat/MyApp copy/GoogleAdMobAdsSDK' дублирующий символ _OBJC_CLASS _ $_ AppDelegate в:     /Users/madept/Library/Developer/Xcode/DerivedData/Alpha -dvvymdlmzseytagllsmbbrxdgutz/Build/Intermediates/Alpha.build/Debug-iphonesimulator/Alpha.build/Objects-normal/i386/AppDelegate-56890B6B994A4284.o

Спасибо.

4b9b3361

Ответ 2

Другая причина, по которой часто возникает эта ошибка, - случайный импорт файла .m вместо .h.

Ответ 3

Шаги:

  • Проверить фазы сборки в настройках цели.
  • Проверьте, существует ли файл дважды или один раз.
  • Если файл существует, дважды удалите его. Если не удалить файл в нижней части который является последним.
  • Создайте снова.

Ответ 4

Просто добавьте к возможным решениям.

В моем случае я случайно объявил и инициализировал переменную в файле заголовка.

Например, это неверно:

MyFile.h

#import <Foundation/Foundation.h>

NSInteger const ABCMyConstant = 6;

Это должно быть:

MyFile.h

#import <Foundation/Foundation.h>

NSInteger const ABCMyConstant;

MyFile.m

#import "MyFile.h"

NSInteger const ABCMyConstant = 6;

Ответ 5

Перейдите в раздел "Настройка и поиск" Нет общих блоков и установите НЕТ. И снова создайте, вы не получите эту ошибку снова.

Ответ 6

Я обнаружил, что получаю ошибку, когда у меня был const, объявленный в файле .m с тем же именем, что и другой const в другом .m файле. Оба файла # включают один и тот же родительский файл.

Ответ 7

Я просто испытал это после воссоздания класса модели для Core Data. Параметр меню для создания классов объектов создал дублированный класс модели. как только я удалил обман, ошибка исчезла...

Ответ 8

Ошибки компоновщика всегда показывают проблему, связанную с использованием библиотеки или проблемами с импортом.

Иногда ошибка возникает, когда вы импортировали файл .m вместо файла .h.

Пожалуйста, проверьте ваш код и найдите оператор импорта .m в одном из ваших файлов заголовков (расширение .h), у меня была похожая проблема и возникла ошибка с 14 повторными символами.

Проверьте, не импортировали ли вы ViewControler.m вместо его .h, поэтому это должно быть так:

    import "ViewController.h"

и ваш AppDelegate.h должен выглядеть примерно так:

import "UIKit/UIKit.h"
import "ViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong,nonatomic) ViewController *mainController;
@end

Всегда не забывайте импортировать заголовочные файлы, а не .m

Ответ 9

Если другие люди попробовали все остальные ответы и все еще не работают, попробуйте открыть файл .xcodeproj с помощью вашего любимого текстового редактора и найти имя класса, который дает вам проблемы. Перед тем, как сделать это, закройте Xcode. В файле должна быть одна строка для .h и другая строка для .m. Если есть дубликаты, удалите их, сохраните файл и перестройте.

Ответ 10

У меня была эта проблема с каркасом, который, как я знал, работал в другом проекте. Я скопировал файлы из другого проекта и добавил его к этому. Затем при создании я получил 76 повторяющихся ошибок.

Простым решением для меня было удаление -ObjC из других флагов Linker. В предыдущем проекте этого не было. Как только я это сделал, предупреждение исчезло, и проект был успешно выполнен.

Ответ 11

Я получил эту ошибку, когда у меня была статическая библиотека, включенная в основной проект, а также вторая библиотека, которая также имела ссылку на библиотеку. Это довольно запутанно, так что, возможно, это яснее.

MyWorkspace + Основной проект  + Ссылка на библиотеку 1  + Ссылка на библиотеку 2 + Библиотека 1 + Библиотека 2  + Ссылка на библиотеку 1

Я удалил ссылку на библиотеку 1 из основного проекта, и ошибка исчезла.

Ответ 12

Другая причина может заключаться в том, что при создании дистрибутивной версии проект нацелен на симулятор вместо реального устройства. Это также вызывает это сообщение об ошибке.

Ответ 13

Самый простой способ разрешить это - проблема Xcode 7.0 или последняя, ​​просто не изменяйте Common Blocks, чтобы она не решила вашу проблему. Попробуйте эту целевую задачу Project > Build Setting > No Common Blocks, я изменил ее на NO.

Ответ 14

В некоторых случаях вы также можете получить ошибку "дубликаты символов для архитектуры..." из-за того, что вы случайно объявили константу (const) с тем же именем в двух разных файлах.

Ответ 15

У меня было это, где я дважды определял одну и ту же функцию С. В двух разных файлах .m. Просто удалите одно из определений и вуаля.

Ответ 16

Я попытался очистить проект, стер все полученные данные. Ничего не получалось. Атлас, это сработало для меня.

enter image description here

Другая причина может заключаться в том, что при создании дистрибутивной версии проект нацелен на симулятор, а не на реальное устройство. Это также вызывает это сообщение об ошибке.

Ответ 17

Для меня было другое, я скопировал методы реализации класса as is и iVars также был скопирован... так что в мире iVars есть два набора, и компилятор продолжал жаловаться на дубликаты ivars, прежде чем связывать *.o файлов.

Чтение результатов помогло удалить все дублирующие ивары... благодаря новой функции, в которой вам не нужно @synthesize всех ваших свойств... ошибка ушла...

Ответ 18

У меня такая же ошибка при настройке OCMock. Я исправил его, добавив libOCMock.a в раздел "Копировать файлы" Building Phase

Ответ 19

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

@interface TDInputValidationsTests : XCTestCase

и

@implementation TDInputValidationsTests

Глупая ошибка... Я также предлагаю взглянуть на вкладку "фазы сборки" проекта, чтобы проверить наличие дубликатов. Также может помочь удаление полученных данных и создание чистой сборки.

Ответ 20

Я импортировал файлы из другого проекта, у него также был файл main.m. Таким образом, в целом у меня было два файла main.m, удаление одного разрешило проблему для меня.

Ответ 21

Иногда верьте или нет, Xcode закручивает файл проекта. Единственное решение, которое мы нашли, - это вручную удалить каждую ссылку на нарушительный файл с помощью текстового редактора, а затем повторно добавить файлы в Xcode.

Ответ 22

Примечание для себя: "ПРОЧИТАЙТЕ ОШИБКУ!"

В моем случае это говорит следующее: duplicate symbol _OBJC_CLASS_$_SATCoreData in:

Перевод: объект Object C класса с именем SATCoreData дублируется.

Затем он задает путь для обоих вхождений символа. Чтение пути указывает на два файла класса, заканчивающихся на .o. Если вы посмотрите на оба класса, вы найдете что-то подозрительное. В моем случае я случайно дал двум классам одно и то же имя. Один класс, который у меня был внутри файла другого класса, потому что я что-то тестировал и был слишком ленив, чтобы создать отдельный класс. Надеюсь, это поможет кому-то.

Ответ 23

У меня была эта проблема, и я застрял некоторое время. Для меня это вызвало проблему: я написал несколько булевых файлов .h(между #import и @interface) и использовал их в моем файле .m file

Я просто удалил их из своего .h файла и скопировал их в одно и то же место в мой файл .m, и сборка выполнена успешно.

Ответ 24

Взято из fooobar.com/info/99154/...

Что вы можете сделать, это поместить в свой заголовок (MyConstants.h):

extern const int MyConstant;
extern NSString * const MyStringConstant;

И в исходном файле включите заголовок выше, но определите константы (MyConstants.m):

const int MyConstant = 123;
NSString * const MyStringConstant = @"SomeString";

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

Проблема с объявлением и определением константы в заголовке (который не объявляется как static) заключается в том, что компилятор рассматривает его как независимый глобальный для каждого файла, который включает этот заголовок. Когда компоновщик пытается связать все скомпилированные источники вместе, он встречает глобальное имя столько раз, сколько вы включили MyConstants.h.