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

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

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

其他回答

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

我的情况有点不同

在前缀头中有一个定义缺失

#ifdef DEBUG
#   define TWDLog(fmt, ...) NSLog((@"\n%s\n" fmt), __PRETTY_FUNCTION__, ##__VA_ARGS__)
#else
#   define TWDLog(...)
#endif

搜索PROJECTNAME-Prefix。PCH并检查它是否在两个项目中都缺少一些东西

你的框架是为armv(x)编译的吗?在我看来,它是为i386编译的,而i386的代码不能在iOS设备上运行。或者它是为armv(x)编译的,你试图在模拟器上运行它,这是i386代码。使用Akshay上面显示的构建设置,确保您的框架为将要运行的芯片正确编译。

清洁对我来说很管用

以上答案没有一个能解决我的问题。当我将Xcode升级到8后,我得到了同样的错误,我去了Target -> Build Phases -> The Link Binary With Libraries,删除了导致问题的框架,并重新添加它,所有错误都消失了。希望这对其他人有所帮助。