这个链接器错误告诉我什么?

时间:2014-01-12 09:18:48

标签: ios objective-c linker-errors messageui

我正在尝试获取应用内电子邮件工作的基本示例,并获得似乎与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)

谢谢。 月桂

3 个答案:

答案 0 :(得分:4)

您需要链接MessageUI框架 转到您的项目设置,选择正确的目标 - &gt;一般情况下,向下滚动到“链接的框架和库”按+并添加MessageUI.framework

答案 1 :(得分:2)

你可能做的是添加了MessageUI.framework并将其移动到bundle中的其他文件夹,因此不会更新xcode的路径。 Xcode认为该文件丢失,因为它在下面给出的图像中 project-&gt; targets-&gt;链接二进制文件 中显示为红色。将MessageUI.framework添加到项目可能会解决问题

See the red missing framework or it might not be there totally so add it again

答案 2 :(得分:0)

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

如果它没有解决您的问题,因为您已导入messageUI,  #import <MessageUI/MessageUI.h>

检查项目中是否添加了messageUI框架。如果没有,请将其添加到项目中。清洁项目&amp;你很高兴去那儿