MailCore错误IOS

时间:2012-02-06 08:56:46

标签: objective-c ios xcode4 mailcore

我尝试在我的项目中使用MailCore,但是我收到了这些错误:

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

但所有这些方法都在那里,我可以在MailCoreProject中看到它们!

我希望有人可以帮助我!

2 个答案:

答案 0 :(得分:0)

这可能是一些事情。你如何将MailCore添加到你的项目?作为静态库?

您缺少armv7架构的编译文件。确保它已添加到MailCore项目的“构建设置”中,然后尝试构建它。 您可能为模拟器构建了MailCore,现在您正尝试在设备上运行它。这些必须分开。

此外,您必须确保MailCore正在使用的所有库(例如libetpan)都已正确编译。

PS:将MailCore添加到您的项目并不是一个简单的过程,但它是值得的。 :)

答案 1 :(得分:0)

首先,我会检查你是否已将libMailCore-ios.a添加到“链接的框架和库”列表中。

如果是这样,那么问题可能是MailCore项目是为一个设备编译的,而主项目是为不同的设备编译的。例如,

  • MailCore项目是为模拟器编译的...... MailCore的符号是为x86架构生成的
  • 您的主项目是为真正的iOS设备编译的......所以链接器正在为armv7架构寻找MailCore符号
  • 因此,链接器抱怨,找不到armv7架构的符号

要解决此问题,请使用与主项目相同的设备(或相同的模拟器)重建MailCore子项目(构建清理和构建)。