Duplikuj symbole dla architektury x86 64 pod Xcode

Mam teraz to samo pytanie o powyższym tytule, ale nie znalazłem jeszcze prawidłowej odpowiedzi. Mam błąd:

    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Każda pomoc jest mile widziana.

W końcu poznaję przyczynę tego błędu, ponieważ dodałem {[1] } do Other Linker Flags. Po usunięciu tej wartości mogę zbudować projekt pomyślnie, ale nie wiem dlaczego. Czy ktoś może to wyjaśnić?

Author: jww, 2014-06-19

30 answers

75 zduplikowanych symboli dla architektury x86_64

Oznacza, że załadowałeś te same funkcje dwa razy. Gdy problem zniknie po usunięciu -ObjC z Other Linker Flags, oznacza to, że opcja ta powoduje, że funkcje ładują się dwukrotnie:

From Technical Q & A

Ta flaga powoduje, że linker ładuje każdy plik obiektowy w bibliotece to definiuje klasę lub kategorię Objective-C. Podczas gdy ta opcja będzie zazwyczaj powoduje większy plik wykonywalny (ze względu na dodatkowe kod obiektu załadowane do aplikacji), pozwoli to na pomyślne utworzenie skuteczne Biblioteki statyczne Objective-C zawierające Kategorie na istniejących klas.

Https://developer.apple.com/library/content/qa/qa1490/_index.html

 85
Author: David V,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-01 03:10:50

Dla mnie zmiana "no Common Blocks" z tak na nie (w Targets->Build Settings->Apple LLVM - Code Generation ) naprawiła problem.

 227
Author: Linda MacPhee-Cobb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-20 01:43:00

Głupi, ale upewnij się, że nie masz #imported a .m Plik przez pomyłkę gdzieś

 223
Author: Adam Waite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-04 13:18:12

W moim przypadku stworzyłem właśnie plik nagłówkowy, aby zdefiniować stałe ciągi takie jak:

NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";

Rozwiązałem ten scenariusz używając static:

static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
 43
Author: Sauvik Dolui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 14:19:30

Dzieje się również wtedy, gdy deklarujesz zmienne const o tej samej nazwie w innej klasie:

W pliku.m

const int kMessageLength = 36;

@implementation Message

@end

W czacie plików.m

const int kMessageLength = 20;

@implementation Chat

@end
 27
Author: Luca Davanzo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-25 09:21:58

Mam ten sam problem. W Xcode 7.2 W path Project Target > Build Setting > No Common Blocks, zmieniam go na NO.

 27
Author: Dr. chamran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-01 05:35:40

Stało się tak, gdy zaakceptowałem wyskakujące okienko "zalecane ustawienia" w projekcie, który opracowałem dwa lata temu w Objective-C.

Problem polegał na tym, że po zaakceptowaniu aktualizacji "zalecane ustawienia" Xcode automatycznie zmieniało lub dodało niektóre ustawienia kompilacji, w tym GCC_NO_COMMON_BLOCKS = YES;.

To sprawiło, że kompilacja nie powiodła się z błędem duplicate symbol w moim zaktualizowanym projekcie. Zmieniłem więc No Common Block na NO w Ustawieniach kompilacji i błąd zniknął.

 26
Author: Blaszard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 04:54:27

Uznałem, że przyjęta odpowiedź dotyka problemu, ale nie pomogła mi go rozwiązać, mam nadzieję, że ta odpowiedź pomoże w tym bardzo frustrującym problemie.

duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:

17 duplicate symbols for architecture x86_64

"oznacza, że załadowałeś te same funkcje dwa razy. Ponieważ problem znika po usunięciu-ObjC z innych znaczników linkera, oznacza to, że ta opcja powoduje, że funkcje ładują się dwukrotnie:"

W kategoriach laika oznacza to, że w naszym projekcie mamy dwa pliki o dokładnie tej samej nazwie. Może łączysz jeden projekt w inny? Spójrz na błędy powyżej błędu "duplicate symbols", aby zobaczyć, który folder jest zduplikowany, w moim przypadku był to BLoginViewController.

Na przykład na poniższym obrazku widać, że mam dwa kontrolery Bimageviewcontroller, dla mnie to było przyczyną problemu.

Jak tylko usunąłem jeden to problem zniknął :)

Tutaj wpisz opis obrazka

 25
Author: simon_smiley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-18 04:54:40

Usuń-ObjC z innych Flag linkera lub Sprawdź, czy zaimportowałeś dowolny .plik m zamiast .h przez pomyłkę.

 13
Author: CKR666,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-29 10:29:06

Najszybszy sposób na znalezienie duplikatu to:

  1. Idź do celów
  2. Przejdź do fazy budowania
  3. Przejdź do źródeł kompilacji
  4. Usuń duplikaty plików.
 12
Author: J. Goce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-12 09:49:32

Następujące kroki rozwiązały problem dla mnie.

  1. Przejdź do fazy budowania w Ustawieniach celu.
  2. Przejdź do "Link Binary With Libraries".
  3. Sprawdź, czy którakolwiek z bibliotek istnieje dwa razy.
  4. Zbuduj ponownie.
 11
Author: pigeon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-22 22:14:41

Zdefiniowanie tej samej zmiennej w implementacji @w więcej niż jednej klasie również może spowodować ten problem.

 9
Author: Shree,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-22 11:31:05

Moja sytuacja z jakimś legacy projektem otwartym w Xcode 7.3 była taka:

duplicate symbol _SomeEnumState in:

Następnie lista dwóch niepowiązanych plików.o, potem zostało to powtórzone kilka razy, potem w końcu:

ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

To co dla mnie rozwiązało to zmiana deklaracji enum z:

enum SomeEnumState {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
} SomeEnumState;

Do tego:

typedef NS_ENUM(NSUInteger, SomeEnumState) {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
};
Jeśli ktoś ma na to Wyjaśnienie, proszę oświeć mnie.
 8
Author: tadija,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-12 09:03:31

W moim przypadku w miejscu

Targets > Build Phases > Compile Sources and delete any duplicate files.

 8
Author: Nij,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-24 11:35:39

Dla mnie podczas xcode8 zalecane ustawienia projektu aktualizacja "no Common Blocks" do tak, co powoduje ten problem.

 5
Author: Naveen Shan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 00:15:02

Upewnij się, że nie zaimportowałeś a .m plik przez przypadek możesz usunąć swoje dane pochodne w oknie projektów, a następnie zbudować i uruchomić ponownie.

 3
Author: JohnVanDijk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 09:36:26

Dostałem ten sam błąd kiedy dodałem repozytorium pod

pod 'SWRevealViewController'

Dla już dodanego kodu źródłowego (SWRevealViewController) z Githuba. Tak więc błąd zostanie naprawiony przez usunięcie kodu źródłowego lub repozytorium pod.

Case # 2:

Po raz drugi ten błąd pojawił się, gdy zadeklarowałem stałą w .h plik.

NSString * const SomeConstant  = @"SomeValue";
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
...
...
 3
Author: zeeawan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-28 17:44:19

Dla każdego, kto ma ten problem, nie widziałem mojego rozwiązania w żadnej z tych odpowiedzi.

PoPBXPROJ merge conflict, który został ręcznie rozwiązany (choć słabo), były duplikaty odwołań do poszczególnych plików klas w .pbxproj. Usunięcie tych z projektu > fazy budowania > skompilować źródła naprawiło wszystko dla mnie.

Mam nadzieję, że to komuś pomoże.

 3
Author: Bengovernment,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-16 18:16:53

Dzisiaj dostałem ten sam błąd . Słowo kluczowe błędu to duplicate. Poprawiam przez:

1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :

Usuń odniesienie

3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear
 3
Author: guozqzzu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 06:52:52

To samo stało się ze mną, kiedy integrowałem projekt lob wewnątrz mojego projektu.

Tutaj wpisz opis obrazka

Właściwie projekt lob ma również pliki AFNetworking, Więc usuwam .pliki m z projektu lob.

Tutaj wpisz opis obrazka

Właściwie .pliki m są sprzeczne z moim projektem POd / AFNetworking/.pliki m

Tutaj wpisz opis obrazka

 2
Author: abdulrauf618,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-17 13:09:51

W Xcode 6.3.2. Sprawdziłem wszystkie możliwości jak poniżej

1: nie importowałem .plik m w moim projekcie.

2: usunięto -ObjC z inną flagę linkera.

3: usunąłem wszystkie moje Dane .

Wciąż mam ten sam błąd. usunąłem ten błąd, usuwając dowolną deklarację zmiennej z pliku .pch . w moim przypadku zadeklarowałem AppDelegate obiekt w pliku .pch. w końcu znalazłem powód, który powoduje błąd. więc usuwam Oświadczenie o Dowolna zmienna od .plik pch i mój projekt działa urok.
 2
Author: Jatin Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-17 10:25:37

Ostatnio bolała mnie głowa szukając źródła błędu. Zastanawiałem się, kiedy dowiedziałem się, że moja aplikacja nie chce się kompilować, po prostu dlatego, że miałem następujący fragment kodu w różnych klasach:

dispatch_time_t getDispatchTimeByDate(NSDate *date)
{
    NSTimeInterval interval;
    double second, subsecond;
    struct timespec time;
    dispatch_time_t milestone;


    interval = [date timeIntervalSince1970];
    subsecond = modf(interval, &second);
    time.tv_sec = second;
    time.tv_nsec = subsecond * NSEC_PER_SEC;
    milestone = dispatch_walltime(&time, 0);

    return milestone;
}
Mam nadzieję, że to komuś pomoże.
 2
Author: Evgeniy Kleban,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-24 01:17:24

Kolejnym głupim błędem, który spowoduje ten błąd są powtarzające się pliki. Przypadkowo skopiowałem kilka plików dwa razy. Najpierw poszedłem do Targets - > Build Phases - > Compile sources. Tam zauważyłem kilka plików na tej liście dwa razy i ich lokalizacje.

 2
Author: Andrew McKinley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 21:57:16

Mam nadzieję, że na pewno ci pomoże

Mam ten sam błąd 3 zduplikowane symbole dla architektury x86_64

W moim przypadku skopiowałem kod z innego pliku tego samego projektu np. Kod pliku A. m do B. M i po skomplementowaniu dostałem błąd jako wzmianka. i mam rozwiązać błąd, zmieniając nazwę zmiennej globalnej.

Ten błąd pojawił się w moim przypadku z powodu tej samej deklaracji dla zmiennej globalnej w obu plikach.

 2
Author: Bhupendrasingh Lohar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-25 07:18:08

Ja też mam dziś tę winę.To dlatego, że zdefiniowałem wartość const w pliku .m.Ale zdefiniowałem inny plik .m, który również zawierał tę wartość const.Oznacza to, że ma dwa takie same const values.So pojawia się ten błąd. Moim rozwiązaniem jest dodanie słowa kluczowego "static " przed wartością const.np.:

static CGFloat const btnConunt = 9;

A potem buduję projekt, który nie zgłosi tego błędu.

 2
Author: Juice007,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-04 06:03:50

1.Przejdź do fazy budowania 2.Wyszukaj nazwę pliku 3.Usuń duplikat - >Błąd zniknie.

Jeśli nie, spróbuj wyszukać " plik.m", jeśli widzisz jakiś plik # import".m", Wyczyść tę linię

 2
Author: jonypz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-26 16:41:15

I face the same error what i did

1.Skopiuj zduplikowany plik symboli (nazwa klasy lub nazwa frameworka) z końca pokazanego powyżej wiersza (zduplikowane symbole dla architektury x86_64).

2. Wklej go w Znajdź Nawigator i naciśnij enter

Pokazała mi duplikat klasy. Usuwam duplikat klasy i uruchamiam pomyślnie.

 2
Author: GSK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-03 14:51:52

Żadne z powyższych rozwiązań nie działa dla mnie, po prostu sam to naprawiłem.

Mam duplikat symbolu mojego core data model który sam robię, ale w moim .xcdatamodeld Inspektorze, wybieram Class Definition z Codegen nieruchomości, chyba o to chodzi. Następnie wybieram Manual/None, zostało naprawione.

Mam nadzieję, że to może być pomocne dla Ciebie!

 2
Author: foolishBoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-23 02:39:44

Ten błąd występuje zazwyczaj, gdy połączyłeś dowolną bibliotekę lub plik dwukrotnie. W opisie błędu zostanie wyświetlona nazwa zduplikowanego pliku, możesz wyszukiwać i upewnić się, że nie masz duplikatów. Jeśli znajdziesz duplikaty, Usuń odniesienie do jednego z nich, aby grać bezpiecznie

 2
Author: Arthi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-01 20:39:09

Upewnij się, że nie importujesz [ViewController.m] zamiast pliku nagłówkowego

#import "ViewController.m"
 1
Author: WonderX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-24 17:18:34