我正在尝试获取应用内电子邮件工作的基本示例,并获得似乎与MessageUI框架相关的链接器错误。在我的.h文件中我有
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
@interface ButtonViewController : UIViewController
<MFMailComposeViewControllerDelegate>
{
MFMailComposeViewController *mailComposer;
}
并在我的.m文件中使用该mailComposer对象。我分配init并设置它,没有编译器错误。
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)
谢谢。 月桂
答案 0 :(得分:4)
您需要链接MessageUI框架 转到您的项目设置,选择正确的目标 - &gt;一般情况下,向下滚动到“链接的框架和库”按+并添加MessageUI.framework
答案 1 :(得分:2)
你可能做的是添加了MessageUI.framework并将其移动到bundle中的其他文件夹,因此不会更新xcode的路径。 Xcode认为该文件丢失,因为它在下面给出的图像中 project-&gt; targets-&gt;链接二进制文件 中显示为红色。将MessageUI.framework添加到项目可能会解决问题
答案 2 :(得分:0)
我在创建重复的类时通常会遇到链接器错误。 (通常在使用核心数据时)。所以,只需转到“构建阶段” - &gt; “编译源代码”并查找类的副本(与ButtonViewController一起使用的类)。
如果它没有解决您的问题,因为您已导入messageUI,
#import <MessageUI/MessageUI.h>
检查项目中是否添加了messageUI
框架。如果没有,请将其添加到项目中。清洁项目&amp;你很高兴去那儿