gpt4 book ai didi

ios - 使用 iOS 框架防止 "duplicate symbol"错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:48:58 25 4
gpt4 key购买 nike

Apple 在其所有框架类的 header 中使用以下代码。

#if !defined(__COREFOUNDATION_CFARRAY__)
#define __COREFOUNDATION_CFARRAY__ 1
...
#endif

在设计用于框架的类或类别时,这是消除“重复符号”链接器错误的推荐方法,还是使用 #include 而不是 时遗留下来的保护措施#import 在 c 中?

对此的研究让我找到了这篇关于 include guard 的文章

注意:这个问题不是询问如何修复重复符号错误,而是询问是否有任何方法可以防止您自己的代码在项目中多次包含时导致问题。

最佳答案

关于 include guard 你是对的 - 可能有一些兼容性原因它没有从源代码中删除。

但是,这并不能真正保护您免受重复符号的影响。

例如,

如果你有两个第三方库,每个都使用 SBJSON 库怎么办(几周前我的一位同事遇到过这种情况)。

每个库都是单独编译的,因此,从他们的角度来看,SBJSON 只包含一次。但是,当我开始链接我的应用程序时,我不能,因为我有重复的符号。

我不得不通过手动删除其中一个 .a 库文件中的符号来解决这个问题(This link 表明这是一个很常见的问题!)

编辑:This link是一个更清晰的一步步解决问题的办法

关于ios - 使用 iOS 框架防止 "duplicate symbol"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12277786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com