2

我用于我的应用程序的组件之一要求我使用 -all_load 作为其链接器标志之一。但是当我添加这个标志时,我从我在我的应用程序中使用的另一个库中得到一个错误。当我归档应用程序时,我收到以下错误:

Apple Mach-O Linker Error 64 架构 armv7s 的重复符号

这种情况的解决方案是什么?

4

3 回答 3

1

只需删除该标志并尝试不使用它。如果仍然不起作用,请尝试对每个库使用 --force-load。

于 2012-10-01T09:26:31.370 回答
1

不要尝试在没有加载标志的情况下运行您的代码。该标志的原因是为了处理 Apple 链接器问题,即 ObjectiveC 库中的类别没有得到正确处理。尝试切换到这个:

-force_load $(BUILD_PRODUCTS_DIR)/libfoo.a 

编辑:我已阅读但未验证从 Xcode 4.6 开始不再需要。

于 2012-10-01T12:55:38.427 回答
0

David H 的回答基本正确,但代码示例中有两个错别字。对于需要特殊加载行为的库,链接器参数应如下所示:

-force_load $(BUILT_PRODUCTS_DIR)/libfoo.a 

-all_load注意:我在我的项目中遇到过类似的情况(使用 Xcode 4.6.1),但是当既没有指定也没有-force_load指定(针对 iOS5 和 iOS6)时,应用程序仍然无法链接。

于 2013-03-25T18:56:07.233 回答