Search code examples
objective-ciosxcode4mailcore

MailCore Errors IOS


I try to use MailCore in my project, but I get these error:

Undefined symbols for architecture armv7:
  "_MailCoreEnableLogging", referenced from:
      -[ImapSync run] in ImapSync.o
  "_OBJC_CLASS_$_CTCoreMessage", referenced from:
      l_OBJC_$_CATEGORY_CTCoreMessage_$_CTCoreMessageBuisnessMail in CTCoreMessage+BuisnessMail.o
  "_OBJC_IVAR_$_CTCoreMessage.myFields", referenced from:
      -[CTCoreMessage(CTCoreMessageBuisnessMail) libetpanDateTime] in CTCoreMessage+BuisnessMail.o
      -[CTCoreMessage(CTCoreMessageBuisnessMail) senderDate] in CTCoreMessage+BuisnessMail.o
  "_OBJC_CLASS_$_CTCoreAccount", referenced from:
      objc-class-ref in AttachmentDownloader.o
      objc-class-ref in ImapSync.o
  "_MailCoreDisableLogging", referenced from:
      -[ImapSync run] in ImapSync.o
  "_IfTrue_RaiseException", referenced from:
      -[ImapFolderWorker fetchFrom:to:seqDelta:syncingNew:progressOffset:progressTotal:alreadySynced:] in ImapFolderWorker.o
ld: symbol(s) not found for architecture armv7

but all of these methodes are there, I can see them in the MailCoreProject!

I hope someone can help me!


Solution

  • First, I would check if you have added libMailCore-ios.a to your list of "Linked Frameworks and Libraries".

    If so, then the problem could be that the MailCore project was compiled for one device while your main project was compiled for a different device. For instance,

    • the MailCore project was compiled for simulator ... the symbols of MailCore were generated for x86 architecture
    • your main project was compiled for real iOS device ... so the linker was looking for MailCore symbols for armv7 architecture
    • Thus, the linker complained, symbols for armv7 architecture not found

    To solve the problem, rebuild the MailCore subproject (build-clean and build) with the same device (or same simulator) as your main project.