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

更新:

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


当前回答

主动架构的变化对我很有用,我的一个库使用i386。

在构建设置>>中将“仅构建活动体系结构”从“否”更改为“是”

这对我很管用。希望这对其他人也有帮助。

其他回答

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

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

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

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

在我的案例中,pod更新并没有以某种方式更新项目。所以我必须自己做,添加MBProgressHud到OtherLinkerFlags。