2012-01-02 166 views
26

我无法编译我的设备或模拟器的项目了。我得到13个苹果Mach-O-Linker错误。这一切都是在我尝试使用sharekit失败后开始的。这里是从错误日志:苹果Mach-O链接器错误,我不知道该怎么办

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) 
' 

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

+1

您的项目是如何建立的?看起来您有两个主要问题,但您需要提供更多有关您项目的信息。首先,你在使用某种破解库吗?这就是它看起来像......你下载iOS SDK并尝试直接链接到它。错误是因为它无法找到您从非标准位置使用的iOS 4 SDK,因此无法链接基础库。如果您使用支持iOS 5的Xcode的有效版本(Xcode 4.2.1),请删除旧的伪造框架,添加Foundation和AppKit并重新编译。 – 2012-01-02 23:32:20

+0

谢谢!事实证明,我没有在我的项目中的基础框架。我添加了它,现在我可以编译!我仍然得到2个Apple Mach-0链接器错误,但是我可以编译并且不必重写我的应用程序。感谢Jason Coco,没有你的建议,我从未想过检查正确的框架。 – 2012-01-03 21:08:01

+0

为(可能无关)警告看到这个:http://stackoverflow.com/questions/9458739/ld-warning-directory-not-found-for-option – LearnCocos2D 2013-09-03 08:59:05

回答

2

看起来项目文件可能已被破坏。

最肯定的方式来解决,这是创建一个新的项目,并通过移动在它上面的文件和旧info.plist中。

下一个最有可能的方式来解决这个问题是建立在当前项目中一个新的目标,看看是否会编译(如果你有从旧目标的任何特殊标志,你会想复制它们)。你

也可以尝试一种编译版本与建设,如果他们中的一个在所有的编译器选项工作看看,看看有什么不同。

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

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"

你应该重新命名的目录,或通过项目设置看起来并添加引号的目录。(不过,这可能是比较难找到)

+0

这不是一个报价问题。完整路径作为“选项”的一部分是可见的,所以当它传递给链接器时,它将被正确地转义和/或引用。问题是他可能移动或删除了他的盗版SDK。 – 2012-01-02 23:42:40

+1

你如何盗版一个sdk,你可以免费下载?错误写在第一行......如果它包含空格,它应该是带有空格的'-F“路径。 – Bastian 2012-01-02 23:49:48

+1

我没有盗版我的SDK。我再说一遍,我不会盗用我的SDK。我购买并支付Xcode 4从Mac应用程序商店购买雪豹时为4.99美元。然后,当我从mac应用商店购买狮子时,我下载了xcode 4.1,并在更新到4.2时更新。由于错误,我无法更新到4.2.1。我必须伪造代码签署我的工作,因为我是越狱开发人员。我很生气,我会被指责这样的事情。 – 2012-01-03 20:55:18

49

对于每一个有相似错误。 如果发生这种情况就可以正常下点删除“路径”

靶>构建设置 - >库搜索路径 enter image description here

+3

如果您正在使用像Pixate这样的框架,请尝试为Framework搜索路径做同样的事情(单独离开'$(inherited)')。 – 2013-04-08 20:38:34

+0

谢谢,完美的作品 – iOSAppDev 2013-04-15 11:29:38

+4

但是如果我没有任何物品在道路上呢? – 2013-06-24 12:00:19

0

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

0

我有这个问题,现在我的情况下,选择一个较新的iOS版本的部署目标整流这对我来说。我的项目默认设置为部署到iOS 5,并将其更改为7(最新版本)。

对于任何新的iOS开发这可以通过点击导航XCode项目文件>部署信息>部署目标,然后从下拉菜单中选择相应的版本来完成。

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

18

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

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

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

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

祝你好运。

+1

4天后解决了我的问题!好哇! – Rockyfish 2017-02-23 20:33:45

+1

你是英雄!!!!! – YellowJ 2017-04-14 08:40:47

+0

这不是我的问题,而是有几个框架列出了背后的实际框架丢失(这些框架显示为红色文本)。我只需要删除这些框架并重建 – Marmoy 2017-07-28 11:04:32

1

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

步骤: -

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

希望,如果使用的CocoaPods安装依赖这个问题

4

帮助任何人,请确保您通过点击您的.xcworkspace文件打开你的XCode项目,而不是文件.xcodeproj

+0

是的。为我工作!我正在使用科尔多瓦。显然Cordova使用CocoaPods。谢谢! – hol 2017-08-24 13:40:38

0

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

+0

非常感谢... !!它的工作。 – 2017-06-05 06:04:18

0

我有同样的问题,

我只是简单地将构建选项 - >Enable BitcodeNO

0

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

错误:苹果的Mach-O链接errror

原来,我已经定义的协议和实施的协议扩展。协议扩展的一种方法是公开的,但协议本身不是。这导致了Apple Mach-O Linker错误。

实施例:

协议MyProtocol {VAR字段:字符串{得到}}

延伸MyProtocol {公共 FUNC giveMeSomething() - >字符串}

公共MyClass类:MyProtocol {}

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

因此,该解决方案是使Myprotocol公共

希望帮助别人。

相关问题