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

更新:

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


当前回答

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

其他回答

清洁对我来说很管用

我也遇到了这个问题,我通过检查编译源和链接二进制库是否包含了我所需的所有文件/库/框架来修复它。

当我遇到同样的问题时:

架构i386的未定义符号: _OBJC_CLASS_$_SKPSMTPMessage,引用自ConfirmController.o中的objc-class-ref

结果我忘记添加框架了。确切地说,是QuartzCore.framework。

只需启用“仅构建活动架构”选项

>> Build Settings >> Build Active Architecture Only >>是

记住检查它们是否也在每个目标中启用

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

这样做:

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