升级到Xcode 3.2.3后iPhone应用程序出现链接错误

3

我刚刚升级到了XCODE 3.2.3,并将我的基础SDK从3.0升级到3.2 iPhone SDK。在这样做之后,我开始收到一堆链接错误,但几乎没有任何信息,以下是我得到的内容:

".objc_class_name_CATransition", referenced from:

".objc_class_name_NSObject", referenced from:

".objc_class_name_NSFileManager", referenced from:

".objc_class_name_NSString", referenced from:

".objc_class_name_NSError", referenced from:

".objc_class_name_CABasicAnimation", referenced from:

".objc_class_name_NSOperation", referenced from:

".objc_class_name_CJSONDeserializer", referenced from:

".objc_class_name_UIWindow", referenced from:

".objc_class_name_NSException", referenced from:

".objc_class_name_UIColor", referenced from:

".objc_class_name_CATransaction", referenced from:

".objc_class_name_CLLocationManager", referenced from:

".objc_class_name_MPMoviePlayerController", referenced from:

".objc_class_name_NSMutableSet", referenced from:

".objc_class_name_UIFont", referenced from:

".objc_class_name_NSFileHandle", referenced from:

".objc_class_name_MFMailComposeViewController", referenced from:

".objc_class_name_CAKeyframeAnimation", referenced from:

".objc_class_name_UIImage", referenced from:

".objc_class_name_UIApplication", referenced from:

".objc_class_name_UILabel", referenced from:

".objc_class_name_UIView", referenced from:

".objc_class_name_CLLocation", referenced from:

".objc_class_name_NSMutableString", referenced from:

".objc_class_name_CJSONSerializer", referenced from:

".objc_class_name_NSTimer", referenced from:

".objc_class_name_NSValue", referenced from:

".objc_class_name_NSMutableData", referenced from:

".objc_class_name_NSNumber", referenced from:

"_objc_exception_match", referenced from:

".objc_class_name_UINavigationItem", referenced from:

".objc_class_name_UIViewController", referenced from:

".objc_class_name_NSMutableArray", referenced from:

".objc_class_name_UIScreen", referenced from:

".objc_class_name_NSHTTPCookieStorage", referenced from:

".objc_class_name_MKPinAnnotationView", referenced from:

".objc_class_name_NSNotificationCenter", referenced from:

"_OBJC_CLASS_$_QWAdView", referenced from:

".objc_class_name_NSProcessInfo", referenced from:

".objc_class_name_UITableViewCell", referenced from:

".objc_class_name_CAAnimationGroup", referenced from:

".objc_class_name_NSInvocation", referenced from:

".objc_class_name_NSURL", referenced from:

".objc_class_name_NSSet", referenced from:

"_objc_exception_extract", referenced from:

".objc_class_name_UISearchBar", referenced from:

".objc_class_name_NSMutableURLRequest", referenced from:

".objc_class_name_NSRunLoop", referenced from:

".objc_class_name_NSData", referenced from:

".objc_class_name_NSDate", referenced from:

".objc_class_name_UIBarButtonItem", referenced from:

".objc_class_name_UITableView", referenced from:

".objc_class_name_NSURLRequest", referenced from:

".objc_class_name_NSOperationQueue", referenced from:

".objc_class_name_UIActionSheet", referenced from:

".objc_class_name_UIDevice", referenced from:

".objc_class_name_MKMapView", referenced from:

".objc_class_name_UIToolbar", referenced from:

".objc_class_name_NSXMLParser", referenced from:

".objc_class_name_NSHTTPCookie", referenced from:

".objc_class_name_UIImageView", referenced from:

".objc_class_name_CAMediaTimingFunction", referenced from:

".objc_class_name_NSScanner", referenced from:

"_objc_exception_try_exit", referenced from:

".objc_class_name_NSDateFormatter", referenced from:

".objc_class_name_UIAccelerometer", referenced from:

"_objc_exception_try_enter", referenced from:

".objc_class_name_NSCharacterSet", referenced from:

".objc_class_name_UIScrollView", referenced from:

".objc_class_name_UIButton", referenced from:

".objc_class_name_UINavigationBar", referenced from:

".objc_class_name_UIAlertView", referenced from:

".objc_class_name_NSUserDefaults", referenced from:

".objc_class_name_NSThread", referenced from:

".objc_class_name_NSPropertyListSerialization", referenced from:

"_OBJC_CLASS_$_GANTracker", referenced from:

".objc_class_name_NSMutableDictionary", referenced from:

".objc_class_name_CALayer", referenced from:

".objc_class_name_UIWebView", referenced from:

".objc_class_name_NSBundle", referenced from:

".objc_class_name_NSURLConnection", referenced from:

".objc_class_name_NSAutoreleasePool", referenced from:

".objc_class_name_UIPageControl", referenced from:

".objc_class_name_NSAssertionHandler", referenced from:

".objc_class_name_MKAnnotationView", referenced from:

".objc_class_name_NSDictionary", referenced from:

".objc_class_name_NSLocale", referenced from:

".objc_class_name_NSArray", referenced from:

".objc_class_name_UIActivityIndicatorView", referenced from:

"_OBJC_CLASS_$_AdMobView", referenced from:

有什么想法吗?

更新:

看起来第三方库引起了问题。这些库包括admob、quattro和Google Analytics的库。只有admob已经更新了他们的库,所以将不得不删除其他的库。

5个回答

2

有同样的问题。在编译模拟器时出现大量链接错误;设备上运行正常。

按照Sim的建议检查了框架,但看起来没问题。

编辑:所有的问题似乎都与预编译的第三方库有关(在我的情况下是Facebook Three20.a库和Occipital的libRedLaserSDK.a库)。有人知道我是否需要使用重新编译为4.0版本的这些库,或者是否还有其他解决方法吗?

编辑2:还有一个线索,这表明其他发帖人都在正确的路上:在我的项目“组和文件”列表中,所有的框架都以红色文本显示。但如果我检查其中任何一个,目标复选框都被选中。


你是正确的。在我的情况下,Facebook旧版SDK正在造成问题。 - Iqbal Khan

1

我不知道为什么在升级后突然出现这种情况,但这些链接错误意味着您的链接行缺少一些框架。查看完整的编译器输出(展开“构建结果”中的记录)将非常有帮助。

根据未定义的符号,似乎缺少QuartzCore、Foundation、MediaPlayer、UIKit和其他一些框架。我通过在iPhone开发者网站上搜索缺失的符号(例如“NSOperation”)来解决了这个问题。每个函数的文档都列出了定义该函数的框架。


以上输出是我能得到的全部内容(如果我尝试展开记录,什么也不会发生)。 - aloo

0

检查新建目标是否选中了框架。选择UIkit.framework -> 获取信息并检查常规和目标选项卡。


0

我建议您尝试重新安装XCode。

首先备份/Developer文件夹,然后按照以下步骤进行操作。

在终端中使用以下命令:

sudo /Developer/Library/uninstall-devtools --mode=all

卸载 XCode 和 iPhone SDK 后,删除 /Developer 文件夹以确保它们已经从您的系统中干净地移除。之后重新安装 Xcode。


0

我几天前也遇到了同样的问题,但是我只是重新启动了Xcode,就解决了这个问题,我可以顺利构建我的应用程序。虽然我不知道这个问题最初是由什么引起的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接