我无法再为设备或模拟器编译项目。我得到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)
'
我该如何解决这个问题?请帮忙。
答案 0 :(得分:49)
对于每个有类似错误的人。 如果发生这种情况,您通常可以删除Point
下的“Path”目标 - >构建设置 - >图书馆搜索路径
答案 1 :(得分:18)
将框架多次添加到项目时,可能会发生此错误。
如果您缺少框架头文件或对它们的引用,也可能导致这种情况。
答案 2 :(得分:5)
如果使用CocoaPods安装了依赖项,请确保通过单击.xcworkspace
文件和不 .xcodeproj
文件来打开XCode项目。
答案 3 :(得分:2)
似乎项目文件可能已经被破坏了。
解决此问题的最可靠方法是创建一个新项目,并将文件和旧的info.plist移到其上。
解决此问题的下一个最可能的方法是在当前项目中创建一个新目标,并查看是否会编译(如果您有旧目标的任何特殊标记,则需要复制它们)。
此外,您可以尝试编译Release vs. Build,如果其中一个工作,请查看所有编译器选项,看看有什么不同。
如果你为Sharekit添加了一个标题搜索路径,或许可以尝试清除整个标题搜索路径,看看是否能解决问题。还要确保您的项目仍然包含一个全新项目包含的框架(UIKit和NSFoundation,可能还包括其他框架)。
答案 4 :(得分:1)
添加.m文件以编译源页面。
以下步骤: -
希望能帮助解决此问题的任何人
答案 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链接器错误很多。
请参阅我的回答。
答案 8 :(得分:0)
我遇到了这个问题,现在根据我的情况选择更新的iOS版本,因为部署目标已经为我纠正了这个问题。我的项目默认设置为部署到iOS 5,并将其更改为7(最新的)就可以了。
对于任何刚接触iOS开发的人来说,可以通过点击导航器中的XCode项目文件>来完成。部署信息>部署目标并从下拉菜单中选择适当的版本。
我怀疑这会解决其他人遇到的一些问题,但可能会有一些人和我在同一条船上。
答案 9 :(得分:0)
这是因为项目在核心数据的xcdatamodeld文件中插入了编译源代码。选择你的项目 - >构建阶段 - >编译源并删除projectName.xcdatamodeld文件。
并且还检查是否已导入.m
文件而不是.h
文件,它也会提供相同的链接器错误。检查所有#import代码。
并检查您是否在库中添加了核心数据框架工作并导入了核心数据.h
文件。检查NSManagedObject
的创建并导入其文件。
试试看,如果还有错误,请回复我。
答案 10 :(得分:0)
我遇到了同样的问题,
我只需设置构建选项 - > height
至Enable 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 也公开
希望能有所帮助。