-1

我正在尝试获取应用内电子邮件工作的基本示例,并获得似乎与 MessageUI 框架相关的链接器错误。在我的 .h 文件中,我有

 #import <UIKit/UIKit.h>
 #import <MessageUI/MessageUI.h>

 @interface ButtonViewController : UIViewController
 <MFMailComposeViewControllerDelegate>
 {
        MFMailComposeViewController *mailComposer;
 }

在我的 .m 文件中,我使用该 mailComposer 对象。我分配初始化并设置它,没有编译器错误。

 mailComposer =[[MFMailComposeViewController alloc] init];
 mailComposer.mailComposeDelegate = self;
 [mailComposer setSubject:@"Test mail"];
 [mailComposer setMessageBody:@"Testing Message Body" isHTML:NO];

 [self presentViewController:mailComposer animated:YES completion:nil];

但我确实得到了链接器错误。我想我错过了一些我需要预先做的事情。

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_MFMailComposeViewController", referenced from:
  objc-class-ref in ButtonViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
(null): "_OBJC_CLASS_$_MFMailComposeViewController", referenced from:

(null): Objc-class-ref in ButtonViewController.o

(null): Symbol(s) not found for architecture i386

(null): Linker command failed with exit code 1 (use -v to see invocation)

谢谢你。月桂树

4

3 回答 3

4

您需要链接 MessageUI 框架。
转到您的项目设置,选择正确的目标-> 常规,向下滚动到“链接的框架和库”按 + 并添加 MessageUI.framework

于 2014-01-12T09:25:51.477 回答
2

您可能已经添加了 MessageUI.framework 并将其移动到包中的其他文件夹,因此不会更新 xcode 的路径。Xcode 认为该文件丢失,因为它在project->targets->link binary with libraries中显示为红色,如下图所示。将 MessageUI.framework 添加到项目中可能会解决问题

查看红色缺失的框架,或者它可能完全不存在,所以再次添加它

于 2014-01-12T09:35:32.023 回答
0

当我创建重复的类时,我通常会遇到链接器错误。(通常在使用核心数据时)。所以,只需转到“构建阶段”->“编译源”并查找类的副本(与 ButtonViewController 一起使用的类)。

如果它不能解决你的问题,因为你已经导入了 messageUI, #import <MessageUI/MessageUI.h>

检查是否messageUI在项目中添加了框架。如果没有,请将其添加到项目中。清理项目,然后你就可以开始了

于 2014-01-12T09:27:33.507 回答