我用于我的应用程序的组件之一要求我使用 -all_load 作为其链接器标志之一。但是当我添加这个标志时,我从我在我的应用程序中使用的另一个库中得到一个错误。当我归档应用程序时,我收到以下错误:
Apple Mach-O Linker Error 64 架构 armv7s 的重复符号
这种情况的解决方案是什么?
只需删除该标志并尝试不使用它。如果仍然不起作用,请尝试对每个库使用 --force-load。
不要尝试在没有加载标志的情况下运行您的代码。该标志的原因是为了处理 Apple 链接器问题,即 ObjectiveC 库中的类别没有得到正确处理。尝试切换到这个:
-force_load $(BUILD_PRODUCTS_DIR)/libfoo.a
编辑:我已阅读但未验证从 Xcode 4.6 开始不再需要。
David H 的回答基本正确,但代码示例中有两个错别字。对于需要特殊加载行为的库,链接器参数应如下所示:
-force_load $(BUILT_PRODUCTS_DIR)/libfoo.a
-all_load
注意:我在我的项目中遇到过类似的情况(使用 Xcode 4.6.1),但是当既没有指定也没有-force_load
指定(针对 iOS5 和 iOS6)时,应用程序仍然无法链接。