26

我不能再为设备或模拟器编译我的项目了。我收到 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)
'

我该如何解决?请帮忙。

4

12 回答 12

49

对于每一个有类似错误的人。如果发生这种情况,您通常可以删除点下的“路径”

目标->构建设置->库搜索路径 在此处输入图像描述

于 2012-05-30T18:39:23.567 回答
18

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

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

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

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

祝你好运。

于 2014-09-16T07:25:08.143 回答
5

如果您使用 CocoaPods 安装依赖项,请确保通过单击.xcworkspace文件而不是文件打开XCode 项目.xcodeproj

于 2016-12-04T20:59:21.063 回答
2

似乎项目文件可能已以某种方式损坏。

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

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

您也可以尝试为 Release 与 Build 进行编译,如果其中一个有效,请查看所有编译器选项,看看有什么不同。

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

于 2012-01-02T23:30:12.460 回答
1

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

脚步:-

  1. 在导航菜单中单击他的项目
  2. 选择目标
  3. 选择构建阶段
  4. 选择 + 按钮并将文件添加到编译源中。

希望能帮助任何人解决这个问题

于 2014-10-15T10:12:47.457 回答
0

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

于 2013-03-07T14:07:29.637 回答
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"

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

于 2012-01-02T23:31:39.990 回答
0

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

另请参阅我的答案。

在 OCUnit 中使用核心数据类的 Apple Mach-O 链接器错误

于 2013-06-24T12:15:56.157 回答
0

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

对于 iOS 开发新手来说,这可以通过在导航器 > 部署信息 > 部署目标中单击您的 XCode 项目文件并从下拉菜单中选择适当的版本来完成。

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

于 2014-01-08T09:48:27.877 回答
0

我有同样的问题,

我只是简单地将 Build Option -> 设置Enable BitcodeNO

于 2017-07-24T09:50:56.500 回答
0

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

于 2017-06-05T06:03:05.300 回答
0

我用自己开发的 cocoapod 遇到了这个问题。

错误是:Apple Mach-O 链接器错误

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

例子:

协议 MyProtocol { var field: String { get} }

扩展 MyProtocol { public func giveMeSomething() -> String }

公共类 MyClass: MyProtocol {}

在描述中提到的错误 MyClass referenced from MyProtocol -> MyProtocol referenced from giveMeSomething()...

所以,解决方案是让Myprotocol公开

希望对某人有所帮助。

于 2017-08-24T08:45:26.643 回答