Undefined symbols for architecture i386: ObjC CLASS $ SKPSMTPMessage", referred from: error

Zaimportowałem framework do wysyłania wiadomości e-mail z aplikacji w tle tj. framework SKPSMTPMessage. Czy ktoś może zasugerować, dlaczego poniżej wyświetlany jest błąd

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
  objc-class-ref in ConfirmController.o

"_kSKPSMTPPartContentTransferEncodingKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartMessageKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartContentTypeKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

Źródło, z którego pochodzi framework:-

Blokowanie pól w MFMailComposeViewController

Update :

Odpowiedź: po prostu przeciągnij i upuść folder nad projektem i kliknij Kopiuj. To zaznacz pole wyboru projektu i pole wyboru celu.

Author: Community, 2011-08-08

30 answers

Możesz uzyskać tego typu błąd, jeśli twoja klasa' .plik m nie jest wymieniony w kroku "Skompiluj Źródła" na karcie "fazy budowania"docelowego pliku. Normalnie Xcode robi to za ciebie, ale czasami traci działki i trzeba dodać .plik m ręcznie.

Aby to zrobić:

TargetSettings - > Build faz - > Compile Sources - > add your .M class - > Build and Run

 566
Author: Allen Pike,
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
2013-08-25 20:12:15

Dla mnie problemem okazał się brak frameworków. Po dodaniu em, zadziałało.

 37
Author: verma,
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
2012-09-20 12:44:26

Sprawdź poprawne Architektury i buduj tylko aktywne właściwości architektury.

Tutaj wpisz opis obrazka

 28
Author: Akshay,
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
2013-03-04 15:01:13

Jeśli używasz cocoapods upewnij się, że ustawienia build Twojego celu zawierają $(dziedziczone) w sekcji inne flagi linkera

Tutaj wpisz opis obrazka

 17
Author: Tim,
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-10-19 08:57:04

Czy twój framework jest skompilowany dla armv (x)? Wygląda na to, że jest skompilowany dla i386, który kod nie będzie działał na urządzeniu z iOS. Albo jest skompilowany dla armv (x) i próbujesz uruchomić go na symulatorze, czyli kodzie i386. Upewnij się, używając ustawień kompilacji Akshay wyświetlonych powyżej, że Twój framework jest poprawnie skompilowany dla układu, na którym zamierzasz go uruchomić.

 10
Author: Owen Hartnett,
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
2011-08-08 15:52:23

Jeśli importujesz jakiś inny projekt w xcode i jeśli bieżący i importowany projekt mają te same pliki w źródle kompilatora, po prostu usuń ten sam plik w bieżącym projekcie w Ustawieniach "fazy budowania". U mnie zadziałało.

 7
Author: star18bit,
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-04 00:46:07

Tak, to ma związek z tym, co powiedział allen... poszukaj TargetMembership w sekcji Utilities w pliku źródłowym. istnieje pole wyboru, które kojarzy ten plik z projektem. Sprawdzenie tego rozwiązało ten problem również dla mnie.

 4
Author: yeahdixon,
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
2012-03-20 20:23:57

Może też być tak, że brakuje Ci linku do biblioteki binarnej, sprawdź fazy budowania w swoich targ dodaj wymagane biblioteki, a następnie Produkty > Clean Produkt > Build

To też musi działać!

 4
Author: Gabriel Ramirez,
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
2012-11-09 23:37:16

Miałem ten problem, gdy otworzyłem ten sam projekt dwa razy, tylko jeden projekt był oryginalny, a drugi został sklonowany z adresu URL Gita.

'produkt' > 'czysty' rozwiązał problem.

 4
Author: kraftydevil,
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
2013-01-03 20:19:25

Napotkałem również ten problem i naprawiłem go, sprawdzając, czy zarówno źródło kompilacji, jak i binarny link z biblioteką zawierały wszystkie wymagane przeze mnie pliki/biblioteki/framework.

Tutaj wpisz opis obrazka

 4
Author: yujohnnyzhou,
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
2013-02-08 00:03:33

Kiedy natknąłem się na ten sam problem:

Nieokreślone symbole dla architektury i386:

_OBJC_CLASS_$_skpsmtpmessage, odwołany z: objc-class-ref w ConfirmController.o

Okazało się, że zapomniałem dodać frameworka. To był QuartzCore.ramy, aby być dokładnym.

 4
Author: Mitch Viray,
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
2013-04-11 04:57:04

Spróbuj jeszcze raz:

Więc wypróbowałem wszystkie sugestie na tej stronie.. nic nie działało.. Sposób, w jaki mój problem zaczął się od wykonania kroków w ten tutorial, który uczy jak łączyć biblioteki statyczne. Z mojego przykładowego projektu instrukcje działały dobrze.. ale potem w moim rzeczywistym projekcie zacząłem dostawać błąd powyżej.

Więc to, co zrobiłem, to przejść przez każdy krok wspomnianego tutorial i zbudowany po każdym kroku.. Linia przestępcza okazała się taka jeden: dodawanie-all_load do ustawień budowania - > inne flagi linkera

Okazuje się, że ta flaga była zalecana pewnego razu do linkowania kategorii do bibliotek statycznych.. ale potem okazało się, że ta flaga nie jest już potrzebna Xcode 4.2+.. (to samo dotyczy flagi-force_load.. który był również zalecany w innych postach )..

 4
Author: abbood,
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-05-23 12:10:26

Gdy napotkałem ten sam problem, zapomniałem dodać " skompilowaną wersję biblioteki (z rozszerzeniem .a)". Zwykle dodajemy bibliotekę zaimportowanego projektu w zależności od celu w fazach budowania, ale zapominamy dodać "skompilowaną bibliotekę" w linku binarnym z bibliotekami w fazach budowania.

 3
Author: Balamurugan,
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
2013-03-27 12:25:45

Dodanie tego, co dla mnie zadziałało na wypadek, gdyby inni mieli ten sam problem i wylądowali tutaj. Miałem starszy projekt, który miał ustawienie CLANG_ENABLE_MODULES ustawione na No. Po wielu godzinach frustracji porównałem do pracującego projektu i stwierdziłem, że miałem włączone Moduły ustawione na no w Ustawieniach kompilacji LLVM. Ustawienie tego na tak rozwiązało mój problem, a aplikacja buduje się dobrze.

Ustawienia projektu - > Ustawienia budowania - > wyszukaj 'moduły' i zaktualizuj Moduły (C i Objective-C) na tak.

 3
Author: jlichti,
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-09 19:31:50

Nie dodałem "- all_load-lstdc++ " do innych Flag linkera w ustawieniu budowania i byłem w stanie uruchomić kartę SIM bez błędu, ale nie otrzymałem wyjścia dziennika MonkeyTalk po uruchomieniu, a poprzedni skrypt, który napisałem, że używany do połączenia, pokazał przycisk odtwarzania jako Wyłączony. Wyjście MT IDE pokazało się jako "połączenie ustawione na symulator iOS", ale nie można wybrać przycisku Uruchom / Odtwórz.

Oryginalny projekt miał "ObjC-all_load" w innych flagach linkera i kiedy dołączony "- all_load-lstdc++ " wraz z nim dostałem komunikat o błędzie Ten post dotyczy. Kiedy usunąłem "ObjC-all_load " i dodałem tylko"- all_load-lstdc++ " zbudowany projekt, ale nadal nie ma monkey talk Wyloguj się jako potwierdzenie w konsoli

 2
Author: JJacquet,
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
2013-04-09 18:11:16

Możliwe, że używasz biblioteki, która jest skompilowana tylko dla prawdziwego sprzętu. Na przykład, jeśli używasz biblioteki Bluetooth, takiej jak Zephyr HxM Smart, prawdopodobnie nie skompiluje się ona na symulatorze i ma działać tylko na prawdziwych urządzeniach.

 2
Author: DiscDev,
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
2013-10-07 19:41:56

Pojawił się podobny problem z IOS 6. Udało się go rozwiązać, dodając storekit.framework do "Link Binary with Libraries" w sekcji fazy budowania.

Teraz, to działa jak urok.

 1
Author: Troy,
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
2013-01-07 17:23:24

Mam ten sam problem z 7 błędami po dodaniu PSTCollectionviewcontroller .Jedynym rozwiązaniem tego problemu jest sprawdzenie "Xcode -- > fazy budowania-- > skompiluj źródła "tutaj Dodaj swoje wszystko".m " pliki ..Mam nadzieję, że ten post pomoże użytkownikom w przyszłości.

 1
Author: Naveen,
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
2013-04-25 08:03:39

Na moim używałem Cocoapods do projektu Augmented Reality i dowiedziałem się, że kiedy wdrażasz cocoapods i otwierasz swój projekt .workspace, kończy się z celem projektu Xcode i tych pods cel realizowany wewnątrz tego samego pliku. To, co się działo, to niektóre z nich .m były używane przez oba. Po usunięciu zduplikowanych dla celu Xcode w fazie budowania > > skompilować źródła, działało dobrze.

 1
Author: Joao Paulo,
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-02-03 20:19:58

Odkryłem ten bardzo mylący komunikat podczas próby uaktualnienia do nowej biblioteki Google Analytics.

W moim przypadku problemem było posiadanie dwóch kolidujących ze sobą kopii biblioteki. Były one w różnych folderach, ale oba były wymienione w ścieżkach kompilacji Biblioteki mojej aplikacji (w Ustawieniach kompilacji).

Przeniesienie wszystkich przestarzałych plików bibliotecznych z folderu zakończyło się wykonaniem sztuczki i sprawiło, że tajemnicze komunikaty o błędach zniknęły.

 1
Author: bkbeachlabs,
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-08-03 16:11:25

Sprawdź, czy wszystkie zasoby pakietu są kopiowane w fazie budowania.

 1
Author: Arpan Dixit,
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-08-16 12:04:02

Product = > Clean did the trick for me

 1
Author: YogevSitton,
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-06 10:06:59

Odpowiedź jest po prostu przeciągnij i upuść folder nad projektem i kliknij Kopiuj.

 0
Author: Mann,
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
2011-08-09 09:53:26

Dostałem tę wiadomość, gdy przeciągałem i upuszczałem niektóre pliki źródłowe z innego projektu. Kiedy je usunąłem, a następnie dodałem je za pomocą "Dodaj pliki..."z menu Plik, zbudowany bez błędu.

 0
Author: RyeMAC3,
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
2012-07-07 14:37:20

Miałem podobny błąd z NSManagedObject i to dlatego, że używałem podstawowych danych, ale brakowało mi szkieletu danych w fazie budowania - Link binarny z bibliotekami, jak niektórzy inni odpowiedzieli

 0
Author: Sam,
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
2013-07-17 17:07:22

Możesz uzyskać ten typ błędu, jeśli dodasz do projektu biblioteki innych firm, które wymagają natywnych struktur nieuwzględnionych w projekcie.

Musisz zajrzeć do środka .h i .pliki m z nowo dodanej biblioteki i zobaczyć, jakie frameworki to wymaga, a następnie włączyć te frameworki w projekcie (Target > fazy budowania > Link Binary z bibliotekami).

 0
Author: Cosmin,
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
2013-09-11 14:55:01

Spróbuj usunąć framework, wyczyścić projekt, dodać go z powrotem i skompilować. Lub Usuń klasę, która została dodana przez xcode w źródle kompilacji, clean project, dodaj ją z powrotem, a następnie zbuduj.

 0
Author: Saif,
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
2013-10-13 08:16:53

Pamiętaj, że możesz umieścić makro w dowolnym kontrolerze widoku, który wywołuje już usunięte pliki.

Aplikacja nie pokaże żadnych błędów, dopóki nie zbudujesz aplikacji, wyrzuci błąd w fazie kompilacji .o files.

Pamiętaj, aby usunąć wszystkie makra wywołujące pliki, które już zostały usunięte.

Dzięki:)

 0
Author: Abo3atef,
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-01-21 01:49:13

Oprócz tego, co zrobił Allan, dodając brakujące klasy, podążałem za rozwiązaniem @ emdog4 i dodałem bibliotekę danych podstawowych, przechodząc do fazy budowania w Xcode i pod "binarnym łączem z bibliotekami" klikając na + i wybierając " CoreData.ramy". This posorted out my error

 0
Author: malkoty,
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-03-11 15:12:54

W moim przypadku było trochę inaczej

W nagłówku prefiksu brakowało define

#ifdef DEBUG
#   define TWDLog(fmt, ...) NSLog((@"\n%s\n" fmt), __PRETTY_FUNCTION__, ##__VA_ARGS__)
#else
#   define TWDLog(...)
#endif

Więc poszukaj PROJECTNAME-Prefix.pch i sprawdź, czy czegoś brakuje w obu projektach

 0
Author: Shereef Marzouk,
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-06-27 06:03:18