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

更新:

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


当前回答

在构建阶段检查是否复制了所有的bundle资源。

其他回答

如果你的类的.m文件没有列在目标的“Build Phases”选项卡的“Compile Sources”步骤下,你就会得到这种类型的错误。通常Xcode会为你做这个,但有时它会丢失图形,你需要手动添加.m文件。

这样做:

TargetSettings ->构建阶段->编译源->添加你的。m类->构建和运行

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

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

对我来说,问题在于缺少框架。一旦我加入em,它就起作用了。

尝试删除框架,清理项目,将其添加回来并编译。 或 删除已被xcode在编译源代码中添加的类,清理项目,然后将其添加回build。

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

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