0

プロジェクトで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で見ることができます!

誰かが私を助けてくれることを願っています!

4

2 に答える 2

0

これらは多くのことである可能性があります。MailCoreをプロジェクトにどのように追加しましたか?静的ライブラリとして?

armv7アーキテクチャ用にコンパイルされたファイルがありません。MailCoreプロジェクトの「ビルド設定」に追加されていることを確認してから、ビルドしてみてください。おそらくシミュレーター用にMailCoreをビルドし、デバイスで実行しようとしています。これらは分離する必要があります。

また、libetpanなど、MailCoreが使用しているすべてのライブラリが正しくコンパイルされていることを確認する必要があります。

PS:MailCoreをプロジェクトに追加するのは簡単なプロセスではありませんが、それだけの価値はあります。:)

于 2012-02-24T14:02:58.883 に答える
0

まず、「リンクされたフレームワークとライブラリ」のリストにlibMailCore-ios.aが追加されているかどうかを確認します。

その場合、問題は、メインプロジェクトが別のデバイス用にコンパイルされているのに、MailCoreプロジェクトが1つのデバイス用にコンパイルされていることである可能性があります。例えば、

  • MailCoreプロジェクトはシミュレーター用にコンパイルされました...MailCoreのシンボルはx86アーキテクチャー用に生成されました
  • メインプロジェクトは実際のiOSデバイス用にコンパイルされました...そのため、リンカーはarmv7アーキテクチャのMailCoreシンボルを探していました
  • したがって、リンカーは文句を言い、armv7アーキテクチャのシンボルが見つかりませんでした

この問題を解決するには、メインプロジェクトと同じデバイス(または同じシミュレーター)を使用して、MailCoreサブプロジェクト(build-cleanおよびbuild)を再構築します。

于 2013-11-04T18:59:33.517 に答える