我已经导入框架从应用程序发送电子邮件在后台即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中的字段

更新:

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


当前回答

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

其他回答

是的,这和艾伦说的有关…在源文件的Utilities部分中查找TargetMembership。有一个复选框将该文件与项目关联起来。检查这个也为我解决了这个问题。

如果你正在使用cocoapods,请确保你的目标的构建设置在其他链接器标志部分包含$(inherited)

我没有在构建设置中添加“-all_load -lstdc++”到其他链接器标志,我能够启动sim没有错误,但我没有得到MonkeyTalk日志输出时启动,我以前写的用来连接的脚本现在显示播放按钮为禁用。MT IDE的输出显示为“连接设置到iOS模拟器”,但不能选择运行/播放按钮。

原来的项目有“ObjC -all_load”在其他链接器标志,当我附加了“-all_load -lstdc++”随着它,我得到了这篇文章的错误消息。当我删除了“ObjC -all_load”,只添加了“-all_load -lstdc++”项目构建,但仍然没有monkey talk log out作为控制台的确认

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

清洁对我来说很管用