更新:当您的系统正常工作时,请发表评论。这将确认这是我的设置中的问题,而不是 XCode 中的错误。
将我的开发系统升级到 XCode 4.5.1 并使用 IOS SDK 6.0 编译后,在 IOS 4.3 模拟器上运行时出现以下错误:
dyld: lazy symbol binding failed: Symbol not found: _objc_release
Referenced from: /Users/baraupp/Library/Application Support/iPhone Simulator/4.3.2/Applications/AFD73AB4-7047-468B-A20B-9C941850ED3C/Flyskyhy.app/Flyskyhy
Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation
dyld: Symbol not found: _objc_release
Referenced from: /Users/baraupp/Library/Application Support/iPhone Simulator/4.3.2/Applications/AFD73AB4-7047-468B-A20B-9C941850ED3C/Flyskyhy.app/Flyskyhy
Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation
我已将部署目标设置为 4.3,并在项目中使用 ARC,在 -fno-objc-arc 上有一些文件。编译和链接成功,没有错误,尝试在模拟器上运行时失败。在我升级之前它曾经工作正常。
编辑:
我发现了一个类似的 Stackoverflow 问题,它问的问题几乎完全相同,它的答案建议将 -fobjc-arc 添加到其他链接器标志。不幸的是,这并没有解决我的问题。编辑:我检查了链接阶段实际使用的标志,并且 -fobjc-arc 标志在链接时存在,也没有我明确添加 -fobjc-arc 。
正如布拉德在评论中所建议的那样,我将库添加libarclite_iphoneos.a
到项目中,但这也无济于事。我在 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc 中找到了该库,在我看来这是一个奇怪的位置,但我在其他任何地方都找不到它。
我也在那个库上做了'nm',它也没有定义丢失的_objc_retain
符号。它确实定义了 a _objc_retain$non_lazy_ptr
,但不确定这意味着什么。
编辑:我发现图书馆被忽略了:
ld: warning: ignoring file libarclite_iphoneos.a, missing required architecture i386 in file libarclite_iphoneos.a
很明显,它不是正确的文件。但是我在系统的其他任何地方都找不到相同的文件(我用“find”搜索过)。
有任何想法吗?