我已经导入框架从应用程序发送电子邮件在后台即SKPSMTPMessage框架。有人能建议为什么下面的错误显示

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

框架的来源:-

锁定MFMailComposeViewController中的字段

更新:

答:只需将文件夹拖放到项目上,然后单击复制。 这就是选择项目复选框和目标复选框。


当前回答

在我的项目中,我在一个增强现实项目中使用Cocoapods,我发现当你实现Cocoapods并打开你的项目的。workspace时,你最终会得到Xcode项目目标和那些你在同一个文件中实现的Pods目标。当时的情况是,有些。m同时被双方使用。当我在Build Phases >> Compile Sources中删除了Xcode目标的重复部分后,它工作得很好。

其他回答

当我从另一个项目中拖放一些源文件时,我得到了这条消息。当我删除它们,然后从文件菜单中通过“添加文件…”添加它们时,它没有出现错误。

最后试试这个:

所以我尝试了本页上的所有建议。没有工作. .我的问题是通过遵循本教程中的步骤开始的,该教程教授如何链接静态库。与我的样本项目说明工作良好..但后来在我的实际项目中,我开始得到上面的错误。

所以我所做的就是通过上述教程的每个步骤,并在每个步骤之后构建。令人不快的台词是这样的: 添加-all_load到构建设置->其他链接标志

原来这个标志曾经被推荐用于将类别链接到静态库。但后来发现这个标志不再需要Xcode 4.2+..(同样适用于-force_load标志..其他文章也推荐过)..

当我遇到同样的问题时,我忘记添加“编译版本的库(扩展名为.a)”。通常我们会在Build Phases的Target Dependency中添加导入项目的库,但是我们忘记在Link Binary with Libraries in Build Phases中添加“compiled library”。

我在NSManagedObject中也有类似的错误,这是因为我正在使用核心数据,但在构建阶段中缺少核心数据框架-链接二进制库,就像其他人回答的那样

补充对我有用的东西,以防其他人有同样的问题,并最终在这里结束。我有一个旧的项目,CLANG_ENABLE_MODULES设置为No。经过几个小时的挫折,我比较了一个工作项目,发现我已经在我的LLVM构建设置下启用模块设置为no。将此设置为Yes解决了我的问题,应用程序构建良好。

项目设置->构建设置->搜索“模块”并更新启用模块(C和Objective-C)为YES。