Apple Mach-O Linker错误,我不知道该怎么做

时间:2012-01-02 23:22:40

标签: ios xcode ios5 xcode4 mach-o

我无法再为设备或模拟器编译项目。我得到13个Apple Mach-O-Linker错误。这一切都是在我尝试使用sharekit失败后开始的。以下是错误的日志:

ld: warning: directory not found for option '-F/Users/bbrandy95/Documents/Broken Brandsonic Web Projects/Brandsonic Web mobile/../../Downloads/0.2.1gm1/iphoneos4.0/System/Library/Frameworks'
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_NSURLRequest", referenced from:
      objc-class-ref in Brandsonic_Web_mobileAppDelegate.o
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_CLASS_$_NSAutoreleasePool", referenced from:
      objc-class-ref in main.o
  "_objc_msgSendSuper2", referenced from:
      -[Brandsonic_Web_mobileAppDelegate dealloc] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileViewController didReceiveMemoryWarning] in Brandsonic_Web_mobileViewController.o
      -[Brandsonic_Web_mobileViewController dealloc] in Brandsonic_Web_mobileViewController.o
  "_objc_setProperty", referenced from:
      -[Brandsonic_Web_mobileAppDelegate setWindow:] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate setViewController:] in Brandsonic_Web_mobileAppDelegate.o
  "__objc_empty_vtable", referenced from:
      _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_CLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_SecondView in SecondView.o
      _OBJC_CLASS_$_SecondView in SecondView.o
  "_objc_msgSend", referenced from:
      _main in main.o
      -[Brandsonic_Web_mobileAppDelegate application:didFinishLaunchingWithOptions:] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate dealloc] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate GOOGLE] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate YOUTUBE] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate WIKI] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileViewController webView:shouldStartLoadWithRequest:navigationType:] in Brandsonic_Web_mobileViewController.o
      ...
  "__objc_empty_cache", referenced from:
      _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_CLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_SecondView in SecondView.o
      _OBJC_CLASS_$_SecondView in SecondView.o
  "_OBJC_CLASS_$_NSObject", referenced from:
      _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
  "___CFConstantStringClassReference", referenced from:
      CFString in Brandsonic_Web_mobileAppDelegate.o
      CFString in Brandsonic_Web_mobileAppDelegate.o
      CFString in Brandsonic_Web_mobileAppDelegate.o
      CFString in Brandsonic_Web_mobileViewController.o
      CFString in Brandsonic_Web_mobileViewController.o
      CFString in Brandsonic_Web_mobileViewController.o
      CFString in Brandsonic_Web_mobileViewController.o
      ...
  "_OBJC_CLASS_$_NSKeyedUnarchiver", referenced from:
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_CLASS_$_NSUserDefaults", referenced from:
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_CLASS_$_NSURL", referenced from:
      objc-class-ref in Brandsonic_Web_mobileAppDelegate.o
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_METACLASS_$_NSObject", referenced from:
      _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_SecondView in SecondView.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
'

我该如何解决这个问题?请帮忙。

12 个答案:

答案 0 :(得分:49)

对于每个有类似错误的人。 如果发生这种情况,您通常可以删除Point

下的“Path”

目标 - >构建设置 - >图书馆搜索路径 enter image description here

答案 1 :(得分:18)

将框架多次添加到项目时,可能会发生此错误。

  • 您可以通过删除副本来解决此问题。要找到它,请在Xcode项目导航器中选择框架,然后选择在Finder中显示。然后清理并构建您的项目。

如果您缺少框架头文件或对它们的引用,也可能导致这种情况。

  • 在这种情况下,您应该尝试删除SDK或框架并重新添加它。
祝你好运。

答案 2 :(得分:5)

如果使用CocoaPods安装了依赖项,请确保通过单击.xcworkspace文件和 .xcodeproj文件来打开XCode项目。

答案 3 :(得分:2)

似乎项目文件可能已经被破坏了。

解决此问题的最可靠方法是创建一个新项目,并将文件和旧的info.plist移到其上。

解决此问题的下一个最可能的方法是在当前项目中创建一个新目标,并查看是否会编译(如果您有旧目标的任何特殊标记,则需要复制它们)。

此外,您可以尝试编译Release vs. Build,如果其中一个工作,请查看所有编译器选项,看看有什么不同。

如果你为Sharekit添加了一个标题搜索路径,或许可以尝试清除整个标题搜索路径,看看是否能解决问题。还要确保您的项目仍然包含一个全新项目包含的框架(UIKit和NSFoundation,可能还包括其他框架)。

答案 4 :(得分:1)

添加.m文件以编译源页面。

以下步骤: -

  1. 点击导航菜单中的项目
  2. 选择目标
  3. 选择构建阶段
  4. 选择+按钮并在编译源中添加文件。
  5. 希望能帮助解决此问题的任何人

答案 5 :(得分:0)

问题是你路径中的空间:

xcode对链接器使用以下开关:

-F/Users/bbrandy95/Documents/Broken Brandsonic Web Projects/Brandsonic Web mobile/../../Downloads/0.2.1gm1/iphoneos4.0/System/Library/Frameworks

由于没有引用它将无法正常工作。 (它正在寻找文件夹"/Users/bbrandy95/Documents/Broken"

您应该重命名目录,或查看项目设置并在目录中添加引号。 (但这可能很难找到)

答案 6 :(得分:0)

我也有同样的问题,有45种相同类型的错误,当我将libxml2.dylib添加到我的项目中时,错误消失了。

答案 7 :(得分:0)

在某些情况下,您的库搜索路径为空。因为Apple-mac-o链接器错误很多。

请参阅我的回答。

Apple Mach-O Linker Error using Core Data classes in OCUnit

答案 8 :(得分:0)

我遇到了这个问题,现在根据我的情况选择更新的iOS版本,因为部署目标已经为我纠正了这个问题。我的项目默认设置为部署到iOS 5,并将其更改为7(最新的)就可以了。

对于任何刚接触iOS开发的人来说,可以通过点击导航器中的XCode项目文件>来完成。部署信息>部署目标并从下拉菜单中选择适当的版本。

我怀疑这会解决其他人遇到的一些问题,但可能会有一些人和我在同一条船上。

答案 9 :(得分:0)

这是因为项目在核心数据的xcdatamodeld文件中插入了编译源代码。选择你的项目 - >构建阶段 - >编译源并删除projectName.xcdatamodeld文件。 并且还检查是否已导入.m文件而不是.h文件,它也会提供相同的链接器错误。检查所有#import代码。 并检查您是否在库中添加了核心数据框架工作并导入了核心数据.h文件。检查NSManagedObject的创建并导入其文件。 试试看,如果还有错误,请回复我。

答案 10 :(得分:0)

我遇到了同样的问题,

我只需设置构建选项 - > heightEnable Bitcode

答案 11 :(得分:0)

我用自己开发的cocoapod面对这个问题。

错误是:Apple Mach-O Linker errror

事实证明,我已经定义了协议并实现了协议扩展。协议扩展的一种方法是公开的,但协议本身不是。这导致了Apple Mach-O Linker错误。

示例:

protocol MyProtocol {var field:String {get}}

扩展名MyProtocol {公开 func giveMeSomething() - > String}

公共类MyClass:MyProtocol {}

在描述中提到的错误是MyProtocol引用的MyClass - > MyProtocol引用了giveMeSomething()...

因此,解决方案是使 Myprotocol 公开

希望能有所帮助。