XCode 4.3 使用错误链接的 dylib 构建 iOS 应用程序(未找到符号:_OBJC_CLASS_$_CLGeocoder)

Posted

技术标签:

【中文标题】XCode 4.3 使用错误链接的 dylib 构建 iOS 应用程序(未找到符号:_OBJC_CLASS_$_CLGeocoder)【英文标题】:XCode 4.3 builds iOS Apps with wrong linked dylibs (Symbol not found: _OBJC_CLASS_$_CLGeocoder) 【发布时间】:2012-03-06 15:03:04 【问题描述】:

XCode 4.3 在 Release 配置中使用错误链接的 dylib 构建 ios 应用程序(请参阅底部的错误)。

应用在设备上启动后立即崩溃。

在 cli 上使用 xcodebuild 或使用 Xcode 4.2.1 构建应用程序有效。

应用再次链接 CoreLocation(并在目标中)并在 iOS 5.x 上使用 CLGeocoder。在 iOS 4.x 上使用 MKReverseGeoCoder。 (NSClassFromString() returns a class even when class should not be available)

只有在您构建档案并将应用程序作为 IPA 文件共享时才会发生这种情况。在 iOS 设备 (4.x) 上启动应用程序后立即。

Dyld Error Message:   Symbol not found: _OBJC_CLASS_$_CLGeocoder   
Referenced from: /var/mobile/Applications/*********/AppName.app/AppName
Expected in: /System/Library/Frameworks/CoreLocation.framework/CoreLocation  
in /var/mobile/Applications/*********/AppName.app/AppName
Dyld Version: 179.7

我怎样才能摆脱这个错误?

【问题讨论】:

你找到解决这个错误的方法了吗?? 不,我没有找到解决方案。向 Apple 报告的错误也是“开放的”。 我遇到了同样的错误!也许我们应该为此开始赏金,或者您找到解决方案了吗? 【参考方案1】:

即使在尝试了 bllubbor 在您在问题中链接到的线程上发布的解决方案之后,我也收到了同样的错误:

if (NSClassFromString(@"CLGeocoder") && 
    [NSClassFromString(@"CLGeocoder") instancesRespondToSelector:
@selector(reverseGeocodeLocation:completionHandler:) ]) 

                        //iOS 5 or later    
  

我还可以通过确保 CoreLocation 框架在目标的构建设置中的弱链接(即设置为可选而不是必需)来解决它。

【讨论】:

【参考方案2】:

CoreLocation 框架添加到您的项目包中。

【讨论】:

CoreLocation 已经在目标和项目包中!

以上是关于XCode 4.3 使用错误链接的 dylib 构建 iOS 应用程序(未找到符号:_OBJC_CLASS_$_CLGeocoder)的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 项目中使用 OpenCV 会导致链接器错误

Xcode 查找错误的 OpenCV 库名称:2.4.dylib 而不是 2.4.5.dylib

xcode 编译错误找不到 libz.dylib

Xcode 存档链接器错误 dlib

.dylib 在 Debug 中链接,在 XCode 中找不到 iPhone 的 Release

Xcode 10 签名错误:Frameworks/libswiftsimd.dylib:代码对象根本没有签名