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

更新:

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


当前回答

除了Allan所做的,添加缺少的类,我遵循@emdog4的解决方案,通过在Xcode中构建阶段并在“链接二进制库”下单击+并选择“CoreData.framework”来添加核心数据库。这纠正了我的错误

其他回答

只检查有效架构和构建活动架构属性。

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

记住,你可以在任何视图控制器中放一些宏它会调用你已经删除的文件。

在你构建应用程序之前,应用程序不会显示任何错误,它会在编译阶段在.o文件中抛出错误。

记得删除所有调用已删除文件的MACRO。

谢谢:)

有可能您使用的库仅为REAL硬件编译。例如,如果您正在使用像Zephyr HxM Smart这样的蓝牙库,它可能不会在模拟器上编译,而只能在实际设备上运行。

如果你在xcode中导入其他项目,如果当前项目和导入项目在编译器源中都有相同的文件,那么只需在“构建阶段”设置中删除当前项目中的相同文件。这对我很管用。